PHP:检查一个数组是否只包含连续的数字索引

身居漏室,心系天下

    PHP将所有数组作为关联的,所以没有任何内置的功能。有没有一个比较有效的方法来检查数组只包含数字键?

    确切的说,我们希望能够实现这样的区分:

 $sequentialArray = array('apple', 'orange', 'tomato', 'carrot');

 和

 $assocArray = array('fruit1' => 'apple', 

                    'fruit2' => 'orange', 
                    'veg1' => 'tomato', 
                    'veg2' => 'carrot');

    用下面的方法可以做到:

<?php
function isAssoc($arr)
{
    return array_keys($arr) !== range(0, count($arr) - 1);
}

var_dump(isAssoc(array('a', 'b', 'c'))); // false
var_dump(isAssoc(array("0" => 'a', "1" => 'b', "2" => 'c'))); // false
var_dump(isAssoc(array("1" => 'a', "0" => 'b', "2" => 'c'))); // true
var_dump(isAssoc(array("a" => 'a', "b" => 'b', "c" => 'c'))); // true

?>

    检测有没有问题用下面的方法:

var_dump(isAssoc(array(1 => 'string'))); 

京ICP备14008139号-1