javascript - PHP多维数组排序问题
PHPz
PHPz 2017-04-11 12:29:31
[JavaScript讨论组]

多维数组排序,如果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,
    ], 
];

PHPz
PHPz

学习是最好的投资!

全部回复(3)
伊谢尔伦

好吧 ,我是这样用的

<?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);
天蓬老师

多维数组的排序和一维数组排序一样,只要注意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);
天蓬老师
$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);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号