javascript - PHP多维数组排序问题

多维数组排序,如果a相等,那么比较bb相等再比较c,排序完在生成个新字段sort 作为标识

$arr = [
    1 =>   [
        'a' => 1,
        'b' => 2,
        'c' => 4,
    ], 
    0 =>   [
        'a' => 1,
        'b' => 2,
        'c' => 3,
    ], 
    5 =>   [
        'a' => 3,
        'b' => 2,
        'c' => 3,
    ], 
    2 =>   [
        'a' => 2,
        'b' => 2,
        'c' => 3,
    ], 
    4 =>   [
        'a' => 4,
        'b' => 2,
        'c' => 3,
    ], 
];

# JavaScript
PHPz PHPz 3401 天前 766 次浏览

全部回复(3) 我要回复

  • 伊谢尔伦

    伊谢尔伦2017-04-11 12:31:31

    好吧 ,我是这样用的

    <?php
    
    $a = $b = $c = [];
    
    array_map(function( $value ) use ( &$a,&$b,&$c ){
          array_push($a, $value['a']);
          array_push($b, $value['b']);
          array_push($c, $value['c']);
    } , $arr);
    
    $count = $arr;
    
    var_dump($count);
    array_multisort(
        $a,SORT_ASC,
        $b,SORT_ASC,
        $c,SORT_ASC,
        $arr
    );
    
    var_dump($arr);

    回复
    0
  • 天蓬老师

    天蓬老师2017-04-11 12:31:31

    多维数组的排序和一维数组排序一样,只要注意if条件就行了

            $arr = [
                0 =>[
                    a=>1,
                    b=>3,
                    c=>3
                ],
                1=>[
                    a=>2,
                    b=>2,
                    c=>3
                ],
                2=>[
                    a=>1,
                    b=>2,
                    c=>3
                ]
            ];
            for($i = 0;$i < count($arr); $i++){
                for($j = $i+1;$j <count($arr);$j++){
                    $temp1 = $arr[$i];
                    $temp2 = $arr[$j];
                    if($temp1["a"] > $temp2["a"] || ($temp1["a"] == $temp2["a"] && $temp1["b"] > $temp2["b"]) || ($temp1["a"] == $temp2["a"] && $temp1["b"] == $temp2["b"] && $temp1["c"] > $temp2["c"])){
                        $arr[$i] = $temp2;
                        $arr[$j] = $temp1;
                    }
                }
            }
            var_dump($arr);

    回复
    0
  • 天蓬老师

    天蓬老师2017-04-11 12:31:31

    $arr = [
        0 =>   [
            'a' => 1,
            'b' => 2,
            'c' => 4,
        ],
        1 =>   [
            'a' => 4,
            'b' => 2,
            'c' => 3,
        ],
        2 =>   [
            'a' => 1,
            'b' => 2,
            'c' => 3,
        ],
        3 =>   [
            'a' => 3,
            'b' => 2,
            'c' => 3,
        ],
        4 =>   [
            'a' => 2,
            'b' => 2,
            'c' => 3,
        ],
    ];
    
    sort($arr);
    var_dump($arr);

    回复
    0
  • 取消 回复 发送