从数组中删除非整数条目

2022-08-30 20:19:57

我有一个像这样的PHP数组:

array( [0] => 1
       [1] => 2
       [2] => 3
       [3] => Some strings
)

如何从数组中删除不是整数的条目?我需要输出这个:

array( [0] => 1
       [1] => 2
       [2] => 3
)

有人能给我一个线索吗?


答案 1

array_filteris_int一起使用

$filtered = array_filter($array, 'is_int');

编辑:

如注释中所述,改用以下方法之一可能是更好的解决方案。

$filtered = array_filter($array, 'is_numeric');
$filtered = array_filter($array, 'ctype_digit');

答案 2

如果使用 来自 的输入,则以下每个方面都有问题。$_POST$_GET

  • array_filter($array, 'is_numeric')也将接受分数值,例如。2.5
  • array_filter($array, 'is_int');将拒绝大多数输入,因为发布的值或被视为字符串,即使它们包含有效的 。int$_GET$_POSTintegers
  • array_filter($array, 'ctype_digit');如果输入包含有效,则会拒绝输入,因为它仅匹配表示为字符串的整数。integers

因此,仅过滤有效整数数组的最安全方法是

array_filter($ids, function($e){ return ctype_digit( (string) $e );})