什么顺序

Updated: 2019-01-01

入门

一般的语言都会提供 array/list,dict/map,set 等数据结构。而 PHP 里只有一个 array 用来应付各种情况,它的 key 既可以是数字也可以是字符串。

坑!

Pyton 中将一个 dict 打印出来时,是按照 key 排序过的。

>>> a = {}
>>> a[3] = 'three'
>>> a[0] = 'zero'
>>> for key in a: print(a[key])
...
zero
three

PHP 里打印出来的顺序确是反的:

hphpd> $a = array();
$array = array()
hphpd> $a[3] = 'three';
$a[3] = 'three';
hphpd> $a[0] = 'zero';
$a[0] = 'zero';
hphpd> foreach ($a as $val) { print $val."\n"; }
foreach ($a as $val) { print $val."\n"; }
three
zero

进阶

PHP 的 array 按插入顺序进行迭代。所以必须人工排序

hphpd> ksort($a)
ksort($a)
hphpd> foreach($a as $val) { print $val."\n"; }
foreach($a as $val) { print $val."\n"; }
zero
three