搜索

首页  >  问答  >  正文

usort()怎么对二维数组进行降序排列

usort()怎么对二维数组进行降序排列

弦知音弦知音2235 天前1352

全部回复(5)我来回复

  • 弦知音

    弦知音2019-02-16 09:40:40

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    $stu = [

        ['name'=>'周天子''grade'=>'99'],

        ['name'=>'汉高祖''grade'=>'73'],

        ['name'=>'秦始皇''grade'=>'95'],

    ];

    //输出原始数组

    echo var_export($stu, true),'<hr>';

     

    //用户自定义回调来进行排序(降序)

    usort($stufunction ($m$n){

        return strcmp($n['grade'], $m['grade']);    // strcmp()函数 (本函数返回: 0 如果两个字符串相等, <0 如果 string1 小于 string2, >0 如果string1 大于 string2

    });

    //输出排序后的数组

    echo var_export($stu, true),'<hr>';


    #

    回复
    1
  • 刘毅

    刘毅2019-02-15 21:45:06

    你可以参考一下,

    <?php

    function test($array=array(),$key='',$paixu=true){

    $result=array();

    foreach($array as $k => $v){

    $values[$k]= isset($v[$key]) ? $v[$key] : '';

    }

    unset($v);

    $paixu ? asort($values) : arsort($values);

    foreach ($values as $k => $v){

    $result[$k] = $array[$k];

    }

    return $result;

    }

    $data = array(

    array('post_id'=>1,'title'=>'如何学好PHP','reply_num'=>582),

    array('post_id'=>2,'title'=>'PHP数组常用函数汇总','reply_num'=>182),

    array('post_id'=>3,'title'=>'PHP字符串常用函数汇总','reply_num'=>982),

    );


    $paixuhou=test($data,'reply_num',true);

    echo "<pre>";

    print_r($paixuhou);

    ?>

    回复
    0
  • 刘毅

    刘毅2019-02-15 21:44:36

    是rsort(),你函数都用错了。

    回复
    0
  • 弦知音

    忽略键名根据值排序, sort()升序,rsot()降序, usort()回调, 我是问用回调的方式怎么降序,不是函数用错了。

    弦知音 · 2019-02-16 08:51:08
  • 取消回复