-2

可能重复:
检查数组是否仅包含数字(整数)的更简洁方法

有没有办法检查一维数组中的所有值是否都是ints?

我能做的最好的事情就是

function checkArray($array) {

    foreach($array as $value) {

        if (!is_int($value)) return false;
    }

    return true;
}

我想知道是否有更简洁/预先构建的方式,类似is_int_array()我可能不知道的方式。

4

1 回答 1

2

我想您永远无法击败O(n),因为需要检查所有元素是否符合规则。下面检查每个元素一次O(n)并将其删除,如果它不是整数,则进行简单的比较。

然而,仍然会有稍大的存储复杂度(需要存储过滤后的数组)。

O(n)是复杂性的表示,在这种情况下,复杂性是n(数组中元素的数量),因为每个元素必须被查看一次。

例如,如果您想将每个数字乘以每个其他数字,那么复杂性大约O(n^2)与每个元素一样,您必须查看每个其他元素(尽管这是一个糟糕的例子)

有关Big O Notation的更多信息,请参阅本指南,因为它被称为

但是尝试以下(改编自上一个问题

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;
}
于 2012-09-10T18:30:51.330 回答