【问题标题】:PHP - sorting multidimensional array using array_multisortPHP - 使用 array_multisort 对多维数组进行排序
【发布时间】:2015-07-29 20:01:20
【问题描述】:

我有这个多维数组

Array
(
    [0] => Array
        (
            [at] => 0
            [bt] => 9
        )

    [1] => Array
        (
            [at] => 3
            [bt] => 5
        )

    [2] => Array
        (
            [at] => 0
            [bt] => 3
        )

)

我想按“at”键对其进行排序,所以我尝试了这段代码

//$process = array() given above

$p = array();

foreach ($process as $key => $row) {
        $p[$key] = $row['at'];
}

array_multisort($p, SORT_NUMERIC, SORT_ASC, $process);

我得到了这个结果

Array
(
    [0] => Array
        (
            [at] => 0
            [bt] => 3
        )

    [1] => Array
        (
            [at] => 0
            [bt] => 9
        )

    [2] => Array
        (
            [at] => 3
            [bt] => 5
        )

)

它对“at”进行排序,但它也对“bt”进行排序。

我如何才能仅在键“at”上对该数组进行排序?

像这样:

Array
(
    [0] => Array
        (
            [at] => 0
            [bt] => 9
        )

    [1] => Array
        (
            [at] => 0
            [bt] => 3
        )

    [2] => Array
        (
            [at] => 3
            [bt] => 5
        )

)

谢谢。

编辑:

至于 Mathieu Lescaudron 的回答

当我的阵列上只有这个时,

Array
(
    [0] => Array
        (
            [at] => 0
            [bt] => 9
        )

    [1] => Array
        (
            [at] => 0
            [bt] => 3
        )
)

如何防止它排序,因为我只想按“at”键对其进行排序。没有什么可以排序的,因为它们都是 0。

【问题讨论】:

    标签: php array-multisort


    【解决方案1】:

    使用usort

    $array = array(
                array('at' => 0, 'bt' => 9),
                array('at' => 3, 'bt' => 5),
                array('at' => 0, 'bt' => 3)
            );
    
    usort($array, function($a, $b) {
        return $a['at'] - $b['at'];
    });
    
    var_dump($array);
    

    Try it on Php online

    【讨论】:

    • 我编辑了这个问题。我只是认为只有在我的 $process 数组中只有 2 个元素时才会发生这种情况。所以我在回调函数中创建了一个条件。再次感谢。
    猜你喜欢
    • 2015-01-24
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    • 2016-09-27
    相关资源
    最近更新 更多