首页 > 解决方案 > 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 )

标签: phpintegercomparison

解决方案


尝试这个..

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));

推荐阅读