按值下降并保留键

问题描述 投票:0回答:2

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

我有这样的数据:

$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 ) )
如何显示结果

Desc,因此结果是这样的: Array ( [0] => Array ( [1] => 5 ) [2] => Array ( [0] => 3 ) [1] => Array ( [2] => 1 ) )

trone这个
php arrays sorting multidimensional-array
2个回答
1
投票

您还可以使用
array_multisort

0
投票
(php 4,php 5)

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

[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
        )

)

© www.soinside.com 2019 - 2024. All rights reserved.