根据值对数组进行排序

时间:2016-07-15 08:49:04

标签: php arrays sorting

我有一个像这样的数组

array:2 [▼
  "folder1" => array:3 [▼
    1 => "d1_2.png"
    2 => "d1_1.png"
    3 => "d1_3.png"
  ]
  "folder2" => array:3 [▼
    0 => "d2_2.png"
    1 => "d2_3.png"
    3 => "d2_1.png"
  ]
]

我要做的是根据值对此数组进行排序。所以输出应该是这样的

array:2 [▼
  "folder1" => array:3 [▼
    0 => "d1_1.png"
    1 => "d1_2.png"
    2 => "d1_3.png"
  ]
  "folder2" => array:3 [▼
    0 => "d1_1.png"
    1 => "d1_2.png"
    2 => "d1_3.png"
  ]
]

我看到的所有示例都基于键值排序,但我没有键。我已经尝试了几种排序函数,但它们似乎都没有对数组进行排序。

如何根据我拥有的数组对其进行排序?

由于

3 个答案:

答案 0 :(得分:1)

您可以使用此功能:

asort() - sort associative arrays in ascending order, according to the value

答案 1 :(得分:1)

有大量sorting functions in php,它可以根据值或键对数组进行排序,维护索引关联并进入子数组。

我认为你想要的是sort功能,如下所示:

sort($array['folder1']);
sort($array['folder2']);

或者这个:

foreach ($array as $key => $subarray) {
    sort($array[$key]);
}

请记住。它不是您想要排序的外部数组,而是它的子数组。

答案 2 :(得分:1)

使用array_walk(foreach的功能方式)遍历外部数组,然后使用sort

http://php.net/manual/en/function.array-walk.php
http://php.net/manual/en/function.sort.php

$arr = array(
    "folder1" => array(
        "1" => "d1_2",
        "2" => "d1_1",
        "3" => "d1_3"
    ),
    "folder2" => array(
        "1" => "d2_3",
        "2" => "d2_1",
        "3" => "d2_2"
    )
);

var_dump($arr);

array_walk($arr, function (&$e) {
    sort($e);
});

var_dump($arr);