PHP 数组排序

原文: PHP 数组

   萧

数组排序时发现 sort 与 rsort 排序完毕以后,var_dump 输出时原有 key 值丢失,变为数字索引。

<?php
$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) {
  [0]=>
  string(4) "val1"
  [1]=>
  string(4) "val1"
  [2]=>
  string(4) "val6"
  [3]=>
  string(4) "val6"
  [4]=>
  string(4) "val8"
}
<?php
$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() - 根据关联数组的值,对数组进行升序排列
  • ksort() - 根据关联数组的键,对数组进行升序排列
  • arsort() - 根据关联数组的值,对数组进行降序排列
  • krsort() - 根据关联数组的键,对数组进行降序排列

下面就上面例题用asort()函数,根据关联数组的值,对数组进行升序排列

<?php
$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"
}
取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

点我查看本站打赏源码!

忘记密码?

如何获取邀请码?

关闭