你问了两个不完全相同的问题:
- 首先,如何确定数组是否只有数字键
- 其次,如何确定一个数组是否有sequential个数字键,从0开始
想想你实际需要哪些行为.(这两种方法中的任何一种都适用于您的目的.)
第一个问题(简单地判断所有键是否都是数字)是answered well by Captain kurO.
对于第二个问题(判断数组是否为零索引和顺序),可以使用以下函数:
function isAssoc(array $arr)
{
if (array() === $arr) return false;
return array_keys($arr) !== range(0, count($arr) - 1);
}
var_dump(isAssoc(['a', 'b', 'c'])); // false
var_dump(isAssoc(["0" => 'a', "1" => 'b', "2" => 'c'])); // false
var_dump(isAssoc(["1" => 'a', "0" => 'b', "2" => 'c'])); // true
var_dump(isAssoc(["a" => 'a', "b" => 'b', "c" => 'c'])); // true