recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment usort() trie-t-il un tableau à deux dimensions par ordre décroissant ?

Usort() Comment trier un tableau à deux dimensions par ordre décroissant

弦知音弦知音2190 Il y a quelques jours1304

répondre à tous(5)je répondrai

  • 弦知音

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

    $stu = [
        ['name'=>'周天子', 'grade'=>'99'],
        ['name'=>'汉高祖', 'grade'=>'73'],
        ['name'=>'秦始皇', 'grade'=>'95'],
    ];
    //输出原始数组
    echo var_export($stu, true),'<hr>';
    
    //用户自定义回调来进行排序(降序)
    usort($stu, function ($m, $n){
        return strcmp($n['grade'], $m['grade']);    // strcmp()函数 (本函数返回: 0 如果两个字符串相等, <0 如果 string1 小于 string2, >0 如果string1 大于 string2
    });
    //输出排序后的数组
    echo var_export($stu, true),'<hr>';


    répondre
    1
  • 刘毅

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

    Vous pouvez vous y référer,

    <?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'=>'Comment apprendre PHP bien','answer_num'=>582),

    array('post_id'=>2,'title'=>'Résumé des fonctions courantes pour les tableaux PHP','reply_num'=>182),

    array('post_id' =>3,'title'=>'Résumé des fonctions de chaîne PHP courantes','reply_num'=>982),

    );


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

    echo "<pre>";

    print_r($paixuhou);

    ?>

    répondre
    0
  • 刘毅

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

    C'est rsort(), vous avez utilisé la mauvaise fonction.

    répondre
    0
  • 弦知音

    Ignorez le nom de la clé et triez par valeur, ordre croissant sort(), ordre décroissant rsot(), rappel usort(), je demande comment descendre en utilisant la méthode de rappel, ce n'est pas que la fonction est mal utilisée.

    弦知音 · 2019-02-16 08:51:08
  • Annulerrépondre