为了账号安全,请及时绑定邮箱和手机立即绑定

基于键对PHP多维数组进行排序?

基于键对PHP多维数组进行排序?

PHP
墨色风雨 2019-11-02 13:27:40
我正在尝试根据特定键对PHP哈希表进行排序。数据结构如下所示:print_r($mydata);Array([0] => Array    (        [type] => suite        [name] => A-Name    )[1] => Array    (        [type] => suite        [name] => C-Name    )[2] => Array    (        [type] => suite        [name] => B-Name    ))我已经尝试过ksort,sort,usort,但是似乎没有任何作用。我正在尝试根据名称键向下两级进行排序。这是我尝试使用usort的尝试:function cmp($a, $b) {    return $b['name'] - $a['name'];}usort($mydata, "cmp");有没有简单的方法可以做到这一点,或者我需要编写一个自定义排序功能?
查看完整描述

3 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

试试这个usort函数:


    function cmp($a, $b){

        if ($a == $b)

            return 0;

        return ($a['name'] < $b['name']) ? -1 : 1;

    }


$my_array = array(

0 => array

    (

        'type' => 'suite'

        ,'name' => 'A-Name'

    )

,1 => array

    (

        'type' => 'suite'

        ,'name' => 'C-Name'

    )

,2 => array

    (

        'type' => 'suite'

        ,'name' => 'B-Name'

    )

);



usort($my_array, "cmp");

如果在类中使用它,则第二个参数将更改为如下数组:


usort($my_array, array($this,'cmp'));


查看完整回答
反对 回复 2019-11-02
?
智慧大石

TA贡献1946条经验 获得超3个赞

 <?php

$a=array(

array('a'=>5,'b'=>7),array('c'=>4,'d'=>2),array('e'=>0,'f'=>12)


    );

function cmp_sort($x,$y){           //your function to compare two keys

if($x===$y)

    return 0;

else

    return ($x<$y?1:-1);

}


uasort($a,'cmp_sort');    //call user-defined compare function

print_r($a);              //printing the sorted array



?>

输出=>


数组([2] =>数组([e] => 0 [f] => 12)[1] =>数组([c] => 4 [d] => 2)[0] =>数组([ a] => 5 [b] => 7))


查看完整回答
反对 回复 2019-11-02
  • 3 回答
  • 0 关注
  • 500 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信