如何在php中对数组进行排序

时间:2016-05-14 20:43:59

标签: php arrays sorting

我是这个阵列:

[0] => Array
    (
        [0] => 0
        [1] => 1
    )

[1] => Array
    (
        [0] => 3
        [1] => 4
    )

[2] => Array
    (
        [0] => 2
    )

我需要对值进行排序以获得一个数组,按单个数组值排序,如:

[0] => Array
    (
        [0] => 0
        [1] => 1
    )

[2] => Array
    (
        [0] => 2
    )

[1] => Array
    (
        [0] => 3
        [1] => 4
    )

值(0,1,2,3,4)是唯一的,代表星期几,因此,我最多可以有7个唯一值。

我尝试过使用但没有成功。有任何想法吗? 非常感谢

1 个答案:

答案 0 :(得分:2)

这取决于您希望如何对数组进行排序。在您的示例中,您将第二级数组从低到高排序,然后将第一级数组按第二级数组中的最低值排序,因此我将假设您喜欢的是这样。

你可以用usort做这种事情,但我发现只使用asort()和更多的代码有助于提高可读性。

//Setup variables
$start_array = array( array(0,1), array(3,4), array(2));
$lowest_value = array();
$sorted_array = array();

//Sort your inner arrays and build up a list of lowest values
foreach($start_array as $key => $inner_array) {
    sort($start_array[$key]);
    $lowest_value[$key] = $start_array[$key][0];
}

//Iterate over your lowest values and map to your new array
asort($lowest_value);
foreach($lowest_value as $key => $value){
    $sorted_array[] = $start_array[$key];
}

请注意,这假设您希望您的第一级数组按第二级最低值排序。您可以使用行$lowest_value[$key] = $start_array[$key][0];来改变它,而不是抓住内部数组的平均值,最高值,无论您想要什么。