检查数组值是否为整数

时间:2012-09-10 18:26:33

标签: php arrays validation

  

可能重复:
  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()

1 个答案:

答案 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;
}