在没有密钥的PHP中排序多维数组?

时间:2016-06-09 13:08:20

标签: php arrays multidimensional-array

我想按数字顺序对每个项目的第二个值排序多维数组。

这是数组:

$vulc = array(
        array('s',3),
        array('s',5),
        array('s',2)
    );

我想要这个输出:

$vulc = array(
        array('s',5),
        array('s',3),           
        array('s',2)
    );

我试过这个:

foreach ($vulc as $key => $row) {
    $distance[$key] = $row[2];
}

array_multisort($distance, SORT_ASC, $vulc);

但不起作用:(请帮助我,不建议看到其他答案......通常其他答案太难了:(

3 个答案:

答案 0 :(得分:2)

使用rsort()

$vulc = array(
        array('s',3),
        array('s',5),
        array('s',2)
    );
rsort($vulc);
echo "<pre>";
print_r($vulc);

<强>输出

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

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

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

)

答案 1 :(得分:1)

使用usort功能并尝试:

function sortByOrder($a, $b) {
    return $b[1] - $a[1]; // $b[1] - $a[1] because it need to be descending order
}

usort($vulc, 'sortByOrder');

输出:

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

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

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

)

答案 2 :(得分:0)

您可以排序并添加&#39;排序数组:

<?php
$vulc = array(
    array('s',3),
    array('s',5),
    array('s',2)
);

foreach ($vulc as $key => $row) {
    $distance[] = $row[1];
}

array_multisort($distance, SORT_ASC, $vulc);

foreach ($distance as $row) {
    $vulcOut[] = ['s', $row];
}

// $vulcOut = array(
//     array('s',5),
//     array('s',3),
//     array('s',2)
// );