可能重复:
More concise way to check to see if an array contains only numbers (integers)
有没有办法检查单维数组中的所有值都是int
s?
我能做的最好就是
function checkArray($array) {
foreach($array as $value) {
if (!is_int($value)) return false;
}
return true;
}
我想知道是否有更简洁/预先构建的方式,例如我可能不知道的is_int_array()
。
答案 0 :(得分:2)
我想你永远不会打败O(n)
,因为需要检查所有元素是否符合规则。下面检查每个元素O(n)
并删除它,如果它不是整数,则进行简单的比较。
但是仍然会有稍大的存储复杂性(需要存储已过滤的数组)。
O(n)
表示复杂性,在这种情况下,复杂度为n
(数组中元素的数量),因为每个元素必须一次查看。
例如,如果您希望每个其他数字对每个数字进行多次复用,则每个元素的复杂度约为O(n^2)
,您必须查看每个其他元素(尽管这是一个不好的示例)
有关 Big O Notation 的更多信息,请参阅this guide,因为它被称为
然而尝试以下(改编自previous question)
if($only_integers === array_filter($only_integers, 'is_int')); // true
if($letters === array_filter($letters, 'is_int')); // false
然后你可以做
/**
* Test array against provided filter
* testFilter(array(1, 2, 'a'), 'is_int'); -> false
*/
function testFilter($array, $test) {
return array_filter($array, $test) === $array;
}