日本精品无码一区二区三区久久久,99久久国产综合色婷婷,7777精品伊人久久久大香线蕉,人人妻人人澡人人爽人人dvd,久久精品中文字幕

php二維數(shù)組按其中一列字符串長(zhǎng)度排序

開(kāi)發(fā)技術(shù) 2017/9/15

PHP一維數(shù)組排序比較簡(jiǎn)單,使用asort、ksort等一些方法進(jìn)行排序就可以了。PHP二維數(shù)組排序就相對(duì)難一點(diǎn),必須使用array_multisort和usort來(lái)實(shí)現(xiàn)

下面舉個(gè)例子

假設(shè)數(shù)組:

$users = array(

   array('name' => 'tom',  'age' => 20),

array('name' => 'anny', 'age' => 18),

array('name' => 'jack', 'age' => 22)

);

想要按age從小到大排序。方法如下:

一、使用array_multisort排序

原理:將age提取出來(lái)存儲(chǔ)到一維數(shù)組里,然后按照age升序排列。

具體代碼:

$ages = array();

foreach ($users as $user) {

 $ages[] = $user['age'];

}

array_multisort($ages, SORT_ASC, $users);

運(yùn)行后,$users就是排序好的數(shù)組了。如果需要先按年齡升序排列,再按照名稱(chēng)升序排列,方法同上,就是多提取一個(gè)名稱(chēng)數(shù)組出來(lái),再進(jìn)行排序

調(diào)用方法:

array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users);

二、使用usort

這個(gè)方法最大的好處就是可以自定義一些相對(duì)復(fù)雜點(diǎn)的排序方法。例如按照name的長(zhǎng)度降序排序:

具體代碼:

usort($users, function($a, $b) {

     $al = strlen($a['name']);

     $bl = strlen($b['name']);

     if ($al == $bl)

       return 0;

     return ($al > $bl) ? -1 : 1;

   });

這里使用了匿名函數(shù),如果有需要也可以單獨(dú)提取出來(lái)。其中$a, $b可以理解為$users數(shù)組下的元素,可以直接索引name值,并計(jì)算長(zhǎng)度,而后比較長(zhǎng)度就可以了。

中國(guó)· 上海

谷谷二維碼
添加微信咨詢

CopyRight?2009-2019 上海谷谷網(wǎng)絡(luò)科技有限公司 All Rights Reserved. 滬ICP備11022482號(hào)-8  

關(guān)于我們 | 聯(lián)系我們