如何验证数组仅包含整数值?
我希望能够检查一个数组,并最终得到一个布尔值,true如果该数组仅包含整数并且该数组中false是否还有其他字符。我知道我可以遍历数组并单独检查每个元素,然后返回true或false取决于非数字数据的存在:
true
false
例如:
$only_integers = array(1,2,3,4,5,6,7,8,9,10); $letters_and_numbers = array('a',1,'b',2,'c',3); function arrayHasOnlyInts($array) { foreach ($array as $value) { if (!is_int($value)) // there are several ways to do this { return false; } } return true; } $has_only_ints = arrayHasOnlyInts($only_integers ); // true $has_only_ints = arrayHasOnlyInts($letters_and_numbers ); // false
但是,有没有更简洁的方法可以使用我从未想到的原生PHP功能呢?
注意:对于我当前的任务,我只需要验证一维数组。但是,如果有一种可以递归工作的解决方案,那么我将不胜感激。
$only_integers === array_filter($only_integers, 'is_int'); // true $letters_and_numbers === array_filter($letters_and_numbers, 'is_int'); // false
将来可以帮助您定义两个辅助功能,高阶功能:
/** * Tell whether all members of $array validate the $predicate. * * all(array(1, 2, 3), 'is_int'); -> true * all(array(1, 2, 'a'), 'is_int'); -> false */ function all($array, $predicate) { return array_filter($array, $predicate) === $array; } /** * Tell whether any member of $array validates the $predicate. * * any(array(1, 'a', 'b'), 'is_int'); -> true * any(array('a', 'b', 'c'), 'is_int'); -> false */ function any($array, $predicate) { return array_filter($array, $predicate) !== array(); }