【发布时间】:2022-01-26 08:05:24
【问题描述】:
我有一个这样的 PHP 数组:
array( [0] => 1
[1] => 2
[2] => 3
[3] => Some strings
)
如何从数组中删除不是整数的条目?我需要输出这个:
array( [0] => 1
[1] => 2
[2] => 3
)
谁能给我一个线索?
【问题讨论】:
我有一个这样的 PHP 数组:
array( [0] => 1
[1] => 2
[2] => 3
[3] => Some strings
)
如何从数组中删除不是整数的条目?我需要输出这个:
array( [0] => 1
[1] => 2
[2] => 3
)
谁能给我一个线索?
【问题讨论】:
将array_filter 与is_int 一起使用
$filtered = array_filter($array, 'is_int');
如 cmets 中所述,使用以下方法之一可能是更好的解决方案。
$filtered = array_filter($array, 'is_numeric');
$filtered = array_filter($array, 'ctype_digit');
【讨论】:
is_numeric而不是is_int
如果您正在使用来自$_POST 或$_GET 的输入,则以下各项均存在问题。
array_filter($array, 'is_numeric') 也将接受小数值,例如。 2.5
array_filter($array, 'is_int'); 将拒绝大多数 int 输入,因为发布在 $_GET 或 $_POST 上的值被视为字符串,即使它们包含有效的 integers。integers,array_filter($array, 'ctype_digit'); 将拒绝输入,因为它只匹配表示为字符串的整数。因此,仅针对有效整数过滤数组的最安全方法是
array_filter($ids, function($e){ return ctype_digit( (string) $e );})
【讨论】:
【讨论】:
如果您正在清理数据库,请尝试
$int_array = array_map('intval', $array);
所有内容都将被清理为整数,但错误的转换将为 0
【讨论】: