【问题标题】:How to sorting multi array by value data?如何按值数据对多数组进行排序?
【发布时间】:2015-07-08 01:47:13
【问题描述】:

如何按值对多数组进行排序? 我有这样的数据

$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,所以结果是这样的,谢谢

我想要的输出

print_r($ring);

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

【问题讨论】:

  • 子数组是否总是一个元素的数组?如果是这样,为什么它们是数组而不仅仅是数字?
  • 我想按数组的值排序。
  • 明白,但你没有回答我的问题。数组是否只包含一个值?

标签: php arrays sorting multidimensional-array


【解决方案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);

【讨论】:

    【解决方案2】:

    您也可以使用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
            )
    
    )
    

    【讨论】:

      猜你喜欢
      • 2021-07-11
      • 2011-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多