如何验证数组只包含整数值?
我希望能够检查一个数组,如果数组中只包含整数,则得到一个布尔值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功能来实现这一点?
注意:对于我目前的任务,我只需要验证一维数组。但是如果有一个递归的解决方案,我会很感激看到。
6条答案
按热度按时间3npbholx1#
它有助于定义两个辅助函数(高阶函数):
8wigbo562#
lb3vh1jj3#
另一个替代方案,虽然可能比其他解决方案慢,张贴在这里:
rnmwe5a24#
array_reduce()函数的作用是:
但我更喜欢最快的解决方案(这是你提供的)而不是最简洁的。
zazmityj5#
如果array只有整数,则返回true;如果至少有一个元素不是整数,则返回false;如果array为空,则返回null。
93ze6v8z6#
为什么我们不给予“例外”呢?
接受任何接受用户回调的内置数组函数(
array_filter()
、array_walk()
,甚至usort()
等排序函数),并在回调中抛出异常。例如,对于多维数组:这当然不是最简洁的,但却是一种通用的方式。