如何在PHP中确定它是数组还是哈希?

时间:2013-06-03 03:45:34

标签: php arrays

我知道如果手动声明数组中的键,则将其视为散列,如果它是自生成的键,则它是一个数组(顺序)。那么如果我手动声明

该怎么办?
$array1 = array(1 => 123, 2 => 312, 3 => 456);
// and
$array2 = array(123,312,456);

问题:

  1. $array1是数组还是哈希?
  2. 我对哈希和数组的想法是否正确?

1 个答案:

答案 0 :(得分:2)

PHP仅使用关联数组。确定数组是否是从0size - 1的索引数组,例如,元素已被推送的数组,或使用{{ 1}},唯一已知的方法是检查所有密钥是否都来自array[] = x0

(注意,可以使用来自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,直到最后一个元素。