你问了两个不完全相同的问题:首先,如何确定数组是否只有数字键。
第二,如何确定数组是否具有
序贯数字键,从0开始
考虑一下你真正需要这些行为中的哪一种。(也许这两种方法都能达到你的目的。)
第一个问题(简单地检查所有键都是数字的)是Kuro上尉回答得很好.
对于第二个问题(检查数组是否为零索引和顺序),可以使用以下函数:
function isAssoc(array $arr)
{
if (array() === $arr) return false;
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