php - php is_integer 返回 true 到字符串值
问题描述
我试图弄清楚为什么最后一个元素没有被取消。
<?php
class Filter
{
public static function filterNumbersFromArray(&$arr)
{
$i = 0;
while($i < count($arr)){
if(is_integer($arr[$i]) === false){
unset($arr[$i]);
}
$i++;
}
}
}
$arr = [1, 'a', 'b', 2 , 'bb'];
Filter::filterNumbersFromArray($arr);
print_r(array_values($arr));
我得到的输出是
数组( [0] => 1 [1] => 2 [2] => bb )
解决方案
尝试这个..
class Filter
{
public static function filterNumbersFromArray($arr)
{
$res = [];
foreach($arr as $ar)
{
if(is_integer($ar))
$res[] = $ar;
}
return $res;
}
}
$arr = [1, 'a', 'b', 2 , 'bb'];
$array = Filter::filterNumbersFromArray($arr);
print_r(array_values($array));
推荐阅读
- html - 使用 VBA 从 PDGA 编号的 Excel 列表中抓取网页
- php - PDOStatement::execute() 期望参数 1 是数组,给定字符串
- c++ - 如何将 QEvents 传递给子小部件?
- ios - 协同设计时出现不一致和不透明的错误
- node.js - Azure Functions 在节点中加载 MongoDB 时崩溃
- javascript - 成功条件Node js后的管道
- python - 使用 sympy 进行符号数学,代码永远运行
- google-chrome - Chrome 外部应用程序启动链接
- google-cloud-platform - Cloud Spanner:不区分大小写的查询即使被索引也会变得非常慢
- rxjs - RxJS Observables 和轮子事件