如何验证数组只包含整数值
我希望能够检查一个数组,如果该数组只包含整数,则结果为布尔值true,如果数组中有任何其他字符,则结果为false。我知道我可以在数组中循环并逐个检查每个元素,然后根据非数字数据的存在返回true或false:
例如:
$only_integers=数组(1,2,3,4,5,6,7,8,9,10);
$letters_和_numbers=数组('a',1,'b',2,'c',3);
函数arrayHasOnlyInts($array)
{
foreach($array作为$value)
{
如果(!is_int($value))//有几种方法可以做到这一点
{
返回false;
}
}
返回true;
}
$has_only_ints=arrayHasOnlyInts($only_integers);//符合事实的
$has_only_ints=arrayHasOnlyInts($字母和数字);//错误的
但是,有没有一种更简洁的方法可以使用我没有想到的本机PHP功能来实现这一点
注意:对于我当前的任务,我只需要验证一维数组。但是,如果有一个递归工作的解决方案,我会很感激看到这一点
$only_integers===array_filter($only_integers,'is_int');//符合事实的
$letters_and_numbers===array_filter($letters_and_numbers,'is_int');//错误的
这将有助于您将来定义两个帮助器高阶函数:
/**
*告诉$array的所有成员是否验证$谓词。
*
*all(数组(1,2,3),'is_int')-&燃气轮机;符合事实的
*all(数组(1,2,'a'),'is_int')-&燃气轮机;错误的
*/
函数all($array,$predicate){
返回数组过滤器($array,$predicate)==$array;
}
/**
*告诉$array的任何成员是否验证$predicate。
*
*any(数组(1,'a','b'),'is_int')-&燃气轮机;符合事实的
*any(数组('a','b','c'),'is_int')-&燃气轮机;错误的
*/
函数any($array,$predicate){
返回数组过滤器($array,$predicate)!==array();
}