不定时总结

23 阅读1分钟

1 数组的键值插入顺序

<?php
$a = array();
$a[2] = 2;
$a[1] = 1;
$a[0] = 0;
var_dump($a);
foreach ($a as $k=>$v) {
    echo 'key:'.$k.' value:'.$v;
}
// 输出
array(3) {
  [2]=>
  int(2)
  [1]=>
  int(1)
  [0]=>
  int(0)
}
key:2 value:2key:1 value:1key:0 value:0

可以看到,这里的顺序并没有按照下标从0到2的顺序,而是按照实际的插入顺序。这是因为array的底层是用HashTable来存储,元素形成一个链,通过头尾指针连接,所以插入时,会从头到尾依次插入。这样在遍历时,就按实际插入的顺序来返回了。