数组排序时发现 sort 与 rsort 排序完毕以后,var_dump 输出时原有 key 值丢失,变为数字索引。
$a=array("key1"=>"val1","key6"=>"val6","key3"=>"val1","key5"=>"val6","key4"=>"val8");
echo "sort(\$a)=".PHP_EOL;
sort($a);
var_dump($a);
输出如下:
sort($a)=
array(5) {
string(4) "val1"
string(4) "val1"
string(4) "val6"
string(4) "val6"
string(4) "val8"
$a=array("key1"=>"val1","key6"=>"val6","key3"=>"val1","key5"=>"val6","key4"=>"val8");
echo "rsort(\$a)=".PHP_EOL;
rsort($a);
var_dump($a);
输出如下:
rsort($a)=
array(5) {
[0]=> string(4) "val8"
[1]=> string(4) "val6"
[2]=> string(4) "val6"
[3]=> string(4) "val1"
[4]=> string(4) "val1"
关于上面笔记中的回答:
疑问:“数组排序时发现 sort 与 rsort 排序完毕以后,var_dump 输出时原有 key 值丢失,变为数字索引。”
正解:对关联数组进行升序和降序排列应使用
下面就上面例题用asort()函数,根据关联数组的值,对数组进行升序排列
$a=array("key1"=>"val1","key6"=>"val6","key3"=>"val1","key5"=>"val6","key4"=>"val8");
echo "asort(\$a)=".PHP_EOL;
asort($a);
var_dump($a);
输出如下:
asort($a)=
array(5) {
["key1"]=>
string(4) "val1"
["key3"]=>
string(4) "val1"
["key6"]=>
string(4) "val6"
["key5"]=>
string(4) "val6"
["key4"]=>
string(4) "val8"