PHP中有一些函數(shù)可以用來對(duì)數(shù)組進(jìn)行排序。但是對(duì)一個(gè)有多個(gè)字段的數(shù)組,要怎么按照指定的字段排序呢?可以使用array_multisort這個(gè)函數(shù)來進(jìn)行按指定字段排序。
PHP中有一些函數(shù)可以用來對(duì)數(shù)組進(jìn)行排序。
-
sort() – 對(duì)數(shù)組進(jìn)行升序排列
-
rsort() – 對(duì)數(shù)組進(jìn)行降序排列
-
asort() – 根據(jù)關(guān)聯(lián)數(shù)組的值,對(duì)數(shù)組進(jìn)行升序排列
-
ksort() – 根據(jù)關(guān)聯(lián)數(shù)組的鍵,對(duì)數(shù)組進(jìn)行升序排列
-
arsort() – 根據(jù)關(guān)聯(lián)數(shù)組的值,對(duì)數(shù)組進(jìn)行降序排列
-
krsort() – 根據(jù)關(guān)聯(lián)數(shù)組的鍵,對(duì)數(shù)組進(jìn)行降序排列
例如:
$arr=['green','car','apple','book']; sort($arr); var_dump($arr);
可以得到排序結(jié)果:
array (size=4) 0 => string 'apple' (length=5) 1 => string 'book' (length=4) 2 => string 'car' (length=3) 3 => string 'green' (length=5)
但是對(duì)一個(gè)有多個(gè)字段的數(shù)組,要怎么按照指定的字段排序呢?比如下面這個(gè)數(shù)組:
$arr=[ [ 'age'=>50, 'name'=>'張三' ], [ 'age'=>18, 'name'=>'李四' ], [ 'age'=>27, 'name'=>'王五' ] ];
我們?cè)趺窗凑誥ge或name排序呢?我們可以使用array_multisort這個(gè)函數(shù)來進(jìn)行按指定字段排序。
array_multisort(array_column($arr,'age'),SORT_ASC,$arr); var_dump($arr);
打印結(jié)果
array (size=3) 0 => array (size=2) 'age' => int 18 'name' => string '李四' (length=6) 1 => array (size=2) 'age' => int 27 'name' => string '王五' (length=6) 2 => array (size=2) 'age' => int 50 'name' => string '張三' (length=6)
這樣就排好了,也就是說用array_multisort這個(gè)函數(shù)排序時(shí),用array_column排數(shù)組指定的列提取出來放第一個(gè)參數(shù),排序常量放第二個(gè)參數(shù),數(shù)組放到第三個(gè)參數(shù),就可以按指定的字段進(jìn)行排序了。SORT_ASC 是升序,SORT_DESC 是降序。
推薦學(xué)習(xí):php視頻教程