繁体   English   中英

使用foreach在PHP中对多维数组进行排序

[英]Sort multidimensional array in PHP using foreach

例如,我有一个名为$slice的数组,如下所示:

Array
(
    [0] => Array
        (
            [0] => 12
            [1] => 4
            [2] => 2
            [3] => 8
            [4] => 20
        )

    [1] => Array
        (
            [0] => 9
            [1] => 7
            [2] => 1
            [3] => 10
            [4] => 23
        )

)

我想在上面对数组进行排序,以便输出如下所示:

Array
    (
        [0] => Array
            (
                [0] => 2
                [1] => 4
                [2] => 8
                [3] => 12
                [4] => 20
            )

        [1] => Array
            (
                [0] => 1
                [1] => 7
                [2] => 9
                [3] => 10
                [4] => 23
            )

    )

然后我尝试使用foreach和array_multisort,当我使用print_r时,每个col的结果为1:

foreach ($slice1 as $col) {
    $slicesort[] = array_multisort($col);
}

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

array_multisort排序到位的阵列,它不返回数组排序。 您需要像这样使用它:

foreach ($slice1 as $col) {
    array_multisort($col);
    $slicesort[] = $col;
}

话虽这么说, array_multisort在这里有点过头了,我不确定您是否真的需要创建该数组的副本。 这样就可以了:

foreach ($slice1 as &$col) {
    sort($col);
}

这将通过引用对$slice1的每个数组进行sort ,从而在适当位置订购$slice1

PHP array_multisort ,按照该文件 ,对于排序多个或多维数组,你的情况你并不真的需要它。 在你的情况,你只需要sort ,你可以找到的文件在这里

$slicesort = array();
foreach ($slice1 as $col) {
    sort($col);
    $slicesort[] = $col;
}

array_multisort返回一个布尔值,成功则返回true,否则返回false。

通过以下方式更改代码:

foreach ($slice1 as $col) {
    if (array_multisort($col)) {
        $slicesort[] = $col;
    }
}
$slice = array(
    array(12,4,8,2,10),
    array(9,7,1,10,13)
    );

foreach ($slice as &$arr) {
    sort($arr);
}

print_r($slice);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM