我知道如果手动声明数组中的键,则将其视为散列,如果它是自生成的键,则它是一个数组(顺序)。那么如果我手动声明
该怎么办?$array1 = array(1 => 123, 2 => 312, 3 => 456);
// and
$array2 = array(123,312,456);
问题:
$array1
是数组还是哈希?答案 0 :(得分:2)
PHP仅使用关联数组。确定数组是否是从0
到size - 1
的索引数组,例如,元素已被推送的数组,或使用{{ 1}},唯一已知的方法是检查所有密钥是否都来自array[] = x
到0
。
(注意,可以使用来自size - 1
的增量键,通过“关联”方式构建数组(即提供键和值),并且无法确定它是否未使用上面给出的方法( push 或0
),因为,无论如何,这没有区别)
[]
最终测试$i = 0;
foreach (array_keys($array) as $key) {
if ($key !== $i) break; // Note the !== (not !=)
$i++;
}
if ($i == count($array)) {
// looks like array was built using indexing (see text above)
}
,如果为true,则表示从0开始的所有数字键,每个元素增加1,直到最后一个元素。