亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP多維數組排序 保持索引對應關系 巧用uasort

2020-03-22 18:27:59
字體:
來源:轉載
供稿:網友
  • 實際開發中,多多少少都會遇到數組的排序問題,除了常規的寫簡單的排序算法,PHP 還提供了內置數組排序函數,本次重點分享一下:uasort使用用戶自定義的比較函數對數組中的值進行排序并保持索引關聯,可排序多維數組,本文重點講解此函數。

    uasort 函數

    參數類型:booluasort(array &$array,callable $cmp_function)

    本函數對數組排序并保持索引和單元之間的關聯。

    主要用于對那些單元順序很重要的結合數組進行排序。比較函數是用戶自定義的。

    成功時返回TRUE, 或者在失敗時返回FALSE。

    數組排序實例(非html' target='_blank'>class中):

     1 /** 2  * 自定義排序函數 3  * @param $param1 4  * @param $param2 5  * @return 0(不移動) 1(正向調換順序) -1(逆向調換順序) 6  */ 7  8 function my_sort($param1, $param2){ 9     if($param1 == $param2) return 0;10     else return $param1 > $param2 ? 1 : -1;11 }12 13 $arr = array(14             'a'=>'20',15             'b'=>'1',16             'c'=>'10',17             'd'=>'5',18             'e'=>'21',19             'f'=>'4',20             'g'=>'3',21         );22 23 uasort($arr, 'my_sort');24 25 var_dump($arr);26 27 /*輸出值28 array (size=7)29   'b' => string '1' (length=1)30   'g' => string '3' (length=1)31   'f' => string '4' (length=1)32   'd' => string '5' (length=1)33   'c' => string '10' (length=2)34   'a' => string '20' (length=2)35   'e' => string '21' (length=2)36 */

    多維數組排序實例(非class中):

    /** * 自定義排序函數 * @param $param1 * @param $param2 * @return 0(不移動) 1(正向調換順序) -1(逆向調換順序) */function my_sort($param1, $param2){    if($param1['value'] == $param2['value']) return 0;    else return $param1['value'] > $param2['value'] ? 1 : -1;}$arr = array(            'a'=>array('key'=>'定義1', 'value'=>'20'),            'b'=>array('key'=>'定義2', 'value'=>'1'),            'c'=>array('key'=>'定義3', 'value'=>'10'),            'd'=>array('key'=>'定義4', 'value'=>'5'),            'e'=>array('key'=>'定義5', 'value'=>'21'),            'f'=>array('key'=>'定義6', 'value'=>'4'),            'g'=>array('key'=>'定義7', 'value'=>'3'),        );uasort($arr, 'my_sort');var_dump($arr);/*輸出值array (size=7)  'b' =>     array (size=2)      'key' => string '定義2' (length=7)      'value' => string '1' (length=1)  'g' =>     array (size=2)      'key' => string '定義7' (length=7)      'value' => string '3' (length=1)  'f' =>     array (size=2)      'key' => string '定義6' (length=7)      'value' => string '4' (length=1)  'd' =>     array (size=2)      'key' => string '定義4' (length=7)      'value' => string '5' (length=1)  'c' =>     array (size=2)      'key' => string '定義3' (length=7)      'value' => string '10' (length=2)  'a' =>     array (size=2)      'key' => string '定義1' (length=7)      'value' => string '20' (length=2)  'e' =>     array (size=2)      'key' => string '定義5' (length=7)      'value' => string '21' (length=2)*/

    class中排序,為了方便以二維數組為例:

    uasort($arr1, array($this, 'public_my_sort'));

    uasort($arr2, array('self', 'self_my_sort'));

    class myClassSort{        /**     * 排序主方法     * @param $arr1  self靜態排序     * @param $arr2  this排序     * @return 排序后的數組     */    public function main($arr1 = array(), $arr2 = array()){            uasort($arr1, array($this, 'public_my_sort'));                uasort($arr2, array('self', 'self_my_sort'));                return array('arr1'=>$arr1, 'arr2'=>$arr2);        }        /**     * 自定義排序函數     * @param $param1     * @param $param2     * @return 0(不移動) 1(正向調換順序) -1(逆向調換順序)     */    private static function self_my_sort($param1, $param2){        if($param1['value'] == $param2['value']) return 0;        else return $param1['value'] > $param2['value'] ? 1 : -1;    }            //同上    public function public_my_sort($param1, $param2){        if($param1['value'] == $param2['value']) return 0;        else return $param1['value'] > $param2['value'] ? 1 : -1;    }    }$arr = array(            'a'=>array('key'=>'定義1', 'value'=>'20'),            'b'=>array('key'=>'定義2', 'value'=>'1'),            'c'=>array('key'=>'定義3', 'value'=>'10'),            'd'=>array('key'=>'定義4', 'value'=>'5'),            'e'=>array('key'=>'定義5', 'value'=>'21'),            'f'=>array('key'=>'定義6', 'value'=>'4'),            'g'=>array('key'=>'定義7', 'value'=>'3'),        );        $myClassSort = new myClassSort();var_dump($myClassSort->main($arr, $arr));/*輸出結果同以上實例*/

    類似函數擴展

    array_multisort對多個數組或多維數組進行排序,但是最終填入使用的還是具體一維數組

    arsort 對一維數組進行逆向排序并保持索引關系,保持索引對應關系

    asort對一維數組進行正向排序并保持索引關系,保持索引對應關系

    krsort對數組按照鍵名逆向排序,保持索引對應關系

    ksort對數組按照鍵名正向排序,保持索引對應關系

    natcasesort用“自然排序”算法對一維數組進行不區分大小寫字母的排序,可以用來排序數組內容中字母數字混合的情況,保持索引對應關系

    natsort用“自然排序”算法對一維數組排序,區分大小寫字母,可以用來排序數組內容中字母數字混合的情況,保持索引對應關系

    rsort對一維數組逆向排序,不保持索引對應關系

    sort對一維數組正向排序,不保持索引對應關系

    uasort使用用戶自定義的比較函數對數組中的值進行排序并保持索引關聯,可排序多維數組,本文重點講解此函數

    uksort使用用戶自定義的比較函數對數組中的鍵名進行排序

    usort使用用戶自定義的比較函數對數組中的值進行排序,不保持索引關聯

    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
    青青草原成人在线视频| 综合av色偷偷网| 欧美性精品220| 欧美又大粗又爽又黄大片视频| 国产精品美女在线| 97av在线影院| 国产91精品高潮白浆喷水| 97avcom| 68精品国产免费久久久久久婷婷| 亚洲高清一区二| 国产专区欧美专区| 91影院在线免费观看视频| 欧美日韩一区二区精品| 欧美专区在线观看| 日韩av电影免费观看高清| 中文字幕欧美日韩va免费视频| 美日韩精品免费视频| 欧美亚洲午夜视频在线观看| 亚洲免费av网址| 国产欧美精品xxxx另类| 亲爱的老师9免费观看全集电视剧| 欧美日韩亚洲高清| 午夜精品在线观看| 2018中文字幕一区二区三区| 亚洲欧洲一区二区三区在线观看| 久久精品青青大伊人av| 亚洲激情第一页| 亚洲国产精品高清久久久| 日韩电影免费观看中文字幕| 日韩在线观看成人| 亚洲美女在线看| 成人免费在线视频网站| 亚洲黄页视频免费观看| 亚洲深夜福利视频| 欧美激情a在线| 国产欧美 在线欧美| 亚洲欧美另类国产| 欧美激情小视频| 中文字幕亚洲欧美在线| 91情侣偷在线精品国产| 久久九九有精品国产23| 麻豆精品精华液| 色偷偷888欧美精品久久久| 91高清视频免费观看| 欧美日韩国产麻豆| 国产成人精品视频在线观看| 亚洲人成网在线播放| 久久免费视频观看| 日韩中文在线中文网在线观看| 亚洲精品美女久久| 在线观看亚洲区| 成人激情视频在线播放| 91高潮精品免费porn| 一区二区欧美在线| 亚洲成人在线网| 亚洲欧美日韩第一区| 81精品国产乱码久久久久久| 亚洲最大av在线| 国产91九色视频| 欧美老女人xx| 国产亚洲精品综合一区91| 91精品久久久久久久久久久久久久| 亚洲国产欧美一区二区三区同亚洲| 成人福利网站在线观看11| 国产精品高潮呻吟久久av无限| 久久在线观看视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲人成网站999久久久综合| 黄色成人在线播放| 亚洲最新在线视频| 一区国产精品视频| 日韩亚洲第一页| 亚洲欧美中文日韩v在线观看| 亚洲第一视频网站| 亚洲第一视频在线观看| 一区二区三区www| 国产91精品久久久久久久| 国产成人精品日本亚洲| 91国产视频在线| 最近2019年手机中文字幕| 97人洗澡人人免费公开视频碰碰碰| 欧美xxxx综合视频| 亚洲的天堂在线中文字幕| 日韩精品免费电影| 亚洲精品乱码久久久久久按摩观| 久久久久五月天| 日韩在线观看免费高清完整版| 中文一区二区视频| 国产一区二区丝袜| 777精品视频| 亚洲精品国产综合久久| 欧美成人三级视频网站| 中文字幕视频在线免费欧美日韩综合在线看| www国产亚洲精品久久网站| 国产这里只有精品| 91色在线观看| 97不卡在线视频| 欧美成人高清视频| 欧美在线视频导航| 成人天堂噜噜噜| 久久91超碰青草是什么| 日韩精品极品毛片系列视频| 国产精品久久久久久久一区探花| 97久久超碰福利国产精品…| 亚洲最新av在线| 中文字幕少妇一区二区三区| 国产亚洲精品综合一区91| 亚洲国产成人久久| 精品视频在线播放| 日韩精品在线视频| 日本欧美在线视频| 欧美—级a级欧美特级ar全黄| 欧美激情第6页| 色综合久久天天综线观看| 中文字幕久久亚洲| 日产精品99久久久久久| 欧美资源在线观看| 欧美精品18videosex性欧美| 色偷偷88888欧美精品久久久| 日韩av影视在线| 精品国产自在精品国产浪潮| 国产亚洲一级高清| 中文国产亚洲喷潮| 中文字幕亚洲在线| 欧美激情第6页| 欧美日韩国产中文精品字幕自在自线| 欧美精品久久久久久久免费观看| 亚洲香蕉在线观看| 日本中文字幕久久看| 色综合久久精品亚洲国产| 欧美在线视频一区| 色综合久综合久久综合久鬼88| 日韩精品亚洲精品| 欧美日韩另类视频| 日本成人免费在线| 欧美色播在线播放| 久久久人成影片一区二区三区| 亚洲视屏在线播放| 国产97在线播放| 欧美色视频日本版| 日韩欧美精品在线观看| 97视频在线观看成人| 欧美日在线观看| 国产99久久精品一区二区| 国产精品一二三视频| 日韩大片在线观看视频| 久久久久国产精品免费| 久久久成人精品视频| 91精品久久久久久久久久久久久久| 91情侣偷在线精品国产| 午夜精品视频网站| 亚洲人免费视频| 欧美制服第一页| 26uuu另类亚洲欧美日本一| 欧美三级免费观看| 国产精品久久久久高潮| 国产精品99久久久久久久久久久久| 亚洲大胆美女视频| 亚洲精品一区中文| 国产精品九九久久久久久久| 久久99精品久久久久久琪琪| 日本久久久久久久久| 国产精品久久久久福利| 国产自产女人91一区在线观看|