如何按值数据对多维数组进行排序?

3
如何通过值对多维数组进行排序? 我有如下数据。
$num_a = $_POST['num_a']; //get the value data by array num_a[]
$num_b = $_POST['num_b']; //get the value data by array num_b[]
$score = $_POST['score']; //get the value data by array socre[]

for ($i=0; $i < count($num_a); $i++) { 
    //set total data num_a and num_b with value from score
    $ring[($num_a[$i])][($num_b[$i])] = $score[$i]; 
}

print_r($ring);
//output

Array
(
    [0] => Array
        (
            [1] => 5
        )
    [1] => Array
        (
            [2] => 1
        )
    [2] => Array
        (
            [0] => 3
        )
)

如何按照降序排序来显示结果,以便结果如下,谢谢:

我想要的输出


print_r($ring);

Array
(
    [0] => Array
        (
            [1] => 5
        )
    [2] => Array
        (
            [0] => 3
        )
    [1] => Array
        (
            [2] => 1
        )
)

1
数组 children 是否总是一个元素的数组?如果是,为什么它们是数组而不是单个数字? - Mindastic
我想按照数组的值进行排序。 - Burisrawa
1
你理解了,但是你没有回答我的问题。这些数组只包含一个值吗? - Mindastic
2个回答

1
尝试这个。
$data = [
    0 => [ 1 => 5],
    1 => [ 2 => 1],
    2 => [ 0 => 3],        
];
uasort($data, function($a, $b) {
    $a = array_pop($a);
    $b = array_pop($b);
    if ($a == $b)
    {
        return 0;    
    }
    return ($a < $b) ? 1 : -1;
});

var_dump($data);

0

你也可以使用 array_multisort (PHP 4, PHP 5)

array_multisort(
                 array_map(function($_){return reset($_);},$ring), 
                 SORT_DESC, 
                 $ring
               );

测试

[akshay@localhost tmp]$ cat test.php 
<?php

$data = array(
   array( 1 => 5),
   array( 2 => 1),
   array( 0 => 3),        
);

// Input
print_r($data);

// Sort DESC
array_multisort(array_map(function($_){return reset($_);},$data), SORT_DESC, $data); 

// Output - sorted array
print_r($data);

?>

输出

[akshay@localhost tmp]$ php test.php 
Array
(
    [0] => Array
        (
            [1] => 5
        )

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

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

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

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

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

)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接