【问题标题】:Sort 2D Array in PHP在 PHP 中对二维数组进行排序
【发布时间】:2010-12-07 19:39:02
【问题描述】:

我有一个如下所示的数组:

Array
(

[90] => Array
    (
        [1056] => 44.91
        [1055] => 53.56
        [1054] => 108.88
        [1053] => 23.28

    ), 
[63] => Array
    (
        [1056] => 44.44
        [1055] => 53.16
        [1054] => 108.05

    ), 
[21] => Array
    (
        [1056] => 42.83
        [1055] => 51.36
        [1054] => 108.53
    )
);

这两个键([x] 和 [y])都引用了我数据库中的 ID,因此它们需要保持不变。 [x] 的顺序无关紧要,但我需要按 [y] 的值对每个数组进行排序。

编辑: 我试过这个循环,但它似乎不起作用:

foreach($distance as $key=>$value) {
    asort($value,SORT_NUMERIC);
}

【问题讨论】:

  • 您可以使用 foreach 遍历外部数组并使用 ksort 对每个内部数组进行排序。

标签: php sorting multidimensional-array


【解决方案1】:

使用ksort(或uksort)按数组的键对数组进行排序。

更新:使用asort(或uasort)按值排序,保留键。

更新 2:试试这个

foreach($distance as &$value) {
    asort($value,SORT_NUMERIC);
}

【讨论】:

  • 我想按值(44.91、53.96 等)排序,而不是键([1055]、[1056] 等)。
  • 试试我添加的循环。我认为问题在于 asort 更改了 $value 数组,但由于这不是通过引用,因此它没有将其保存回原始数组。
【解决方案2】:

像这样?

array_walk($array, 'asort');

【讨论】:

    【解决方案3】:

    使用asort() 按值排序。它维护索引关联。

    对于循环,需要通过引用传递$value,所以需要使用&$value

    【讨论】:

      【解决方案4】:
       array_multisort($arrindex1, SORT_DESC, $arrindex2, SORT_DESC, $array);
      

      【讨论】:

        猜你喜欢
        • 2013-08-17
        • 2012-04-03
        • 2017-05-25
        • 2015-09-17
        • 1970-01-01
        • 2021-07-14
        • 2019-05-17
        相关资源
        最近更新 更多