国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁(yè) > 編程 > PHP > 正文

PHP array_multisort() 函數(shù)的深入解析

2020-03-22 20:13:41
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
一、先看最簡(jiǎn)單的情況。有兩個(gè)數(shù)組:
$arr1 = array(1,9,5);
$arr2 = array(6,2,4);
array_multisort($arr1,$arr2);
print_r($arr1); // 得到的順序是1,5,9
print_r($arr2); // 得到的順序是6,4,2
我估計(jì)兩個(gè)數(shù)組的值自始至終都是對(duì)應(yīng)著的:1對(duì)應(yīng)6,9對(duì)應(yīng)2,5對(duì)應(yīng)4。
我們?cè)偌佣嘁粋€(gè)數(shù)組看看會(huì)怎樣:
$arr1 = array(1,9,5);
$arr2 = array(6,2,4);
$arr3 = array(3,7,8);
array_multisort($arr1,$arr2,$arr3);
查看結(jié)果,1自始至終都對(duì)應(yīng)6對(duì)應(yīng)3,其它項(xiàng)也是如此。這種對(duì)應(yīng)關(guān)系就是手冊(cè)中所謂的“排序時(shí)保留原有的鍵名關(guān)聯(lián)”。
另外也可以把每個(gè)數(shù)組想像成數(shù)據(jù)庫(kù)表的一列。而對(duì)應(yīng)著的1,6,3為一數(shù)據(jù)行,9,2,7為另一數(shù)據(jù)行。。。
array_multisort會(huì)先按第一個(gè)數(shù)組(想像成列)排序,如果第一個(gè)數(shù)組(列)的值相同,則按第二個(gè)數(shù)組(列)排序。
具體可以用下面的程式來(lái)測(cè)試:
$arr1 = array(1,9,5,9);
$arr2 = array(6,2,4,1);
$arr3 = array(3,7,8,0);
array_multisort($arr1,$arr2,$arr3);
可以想像這里$arr3的結(jié)果是(3,8,0,7)。二、接下來(lái)講解array_multisort的參數(shù)。這個(gè)函數(shù)的參數(shù)很靈活。最簡(jiǎn)單的情況是如上面所示的以1個(gè)或n個(gè)數(shù)組作為參數(shù),需要注意的是每個(gè)數(shù)組的項(xiàng)數(shù)要一樣,否則會(huì)warning導(dǎo)致排序失效。
像這樣array_multisort($arr1,$arr2,$arr3); 默認(rèn)是所有數(shù)組都是升序排列,如果想對(duì)$arr2降序,并當(dāng)作字符串去比較,就要寫(xiě)成:
array_multisort($arr1, $arr2, SORT_DESC, SORT_STRING, $arr3);
每個(gè)array后面可以跟一個(gè)排序順序標(biāo)志或一個(gè)排序類型標(biāo)志,或者兩種標(biāo)志同時(shí)出現(xiàn)。但是每種排序標(biāo)志在每個(gè)數(shù)組后面只能出現(xiàn)一個(gè)。
詳細(xì)如下:
排序順序標(biāo)志:
SORT_ASC - 按照上升順序排序(默認(rèn))
SORT_DESC - 按照下降順序排序
排序類型標(biāo)志:
SORT_REGULAR - 將項(xiàng)目按照通常方法比較(默認(rèn))
SORT_NUMERIC - 將項(xiàng)目按照數(shù)值比較
SORT_STRING - 將項(xiàng)目按照字符串比較三、最后是array_multisort有什么實(shí)際作用。
我們通常有一些多維數(shù)組需要排序:
復(fù)制代碼 代碼如下:
$guys = Array
(
[0] = Array
(
[name] = jake
[score] = 80
[grade] = A
)
[1] = Array
(
[name] = jin
[score] = 70
[grade] = A
)
[2] = Array
(
[name] = john
[score] = 80
[grade] = A
)
[3] = Array
(
[name] = ben
[score] = 20
[grade] = B
)
)

例如我們想按成績(jī)倒序排列,如果成績(jī)相同就按名字的升序排列。
這時(shí)我們就需要根據(jù)$guys的順序多弄兩個(gè)數(shù)組出來(lái):
$scores = array(80,70,80,20);
$names = array('jake','jin','john','ben');
然后
array_multisort($scores, SORT_DESC, $names, $guys);就行了
還能不能更靈活一點(diǎn)呢,每次想排序都要另外弄些數(shù)組出來(lái)嗎?
其實(shí)在qeephp的helper_array類里面已經(jīng)封裝得很好,下面是它的兩個(gè)方法,需要的人自己修改一下就可以用了:
復(fù)制代碼 代碼如下:
/**
* 根據(jù)指定的鍵對(duì)數(shù)組排序
*
* 用法:
* @code php
* $rows = array(
*array('id' = 1, 'html' target='_blank'>value' = '1-1', 'parent' = 1),
*array('id' = 2, 'value' = '2-1', 'parent' = 1),
*array('id' = 3, 'value' = '3-1', 'parent' = 1),
*array('id' = 4, 'value' = '4-1', 'parent' = 2),
*array('id' = 5, 'value' = '5-1', 'parent' = 2),
*array('id' = 6, 'value' = '6-1', 'parent' = 3),
* );
*
* $rows = Helper_Array::sortByCol($rows, 'id', SORT_DESC);
* dump($rows);
* // 輸出結(jié)果為:
* // array(
* // array('id' = 6, 'value' = '6-1', 'parent' = 3),
* // array('id' = 5, 'value' = '5-1', 'parent' = 2),
* // array('id' = 4, 'value' = '4-1', 'parent' = 2),
* // array('id' = 3, 'value' = '3-1', 'parent' = 1),
* // array('id' = 2, 'value' = '2-1', 'parent' = 1),
* // array('id' = 1, 'value' = '1-1', 'parent' = 1),
* // )
* @endcode
*
* @param array $array 要排序的數(shù)組
* @param string $keyname 排序的鍵
* @param int $dir 排序方向
*
* @return array 排序后的數(shù)組
*/
static function sortByCol($array, $keyname, $dir = SORT_ASC)
{
return self::sortByMultiCols($array, array($keyname = $dir));
}
/**
* 將一個(gè)二維數(shù)組按照多個(gè)列進(jìn)行排序,類似 SQL 語(yǔ)句中的 ORDER BY
*
* 用法:
* @code php
* $rows = Helper_Array::sortByMultiCols($rows, array(
*'parent' = SORT_ASC,
*'name' = SORT_DESC,
* ));
* @endcode
*
* @param array $rowset 要排序的數(shù)組
* @param array $args 排序的鍵
*
* @return array 排序后的數(shù)組
*/
static function sortByMultiCols($rowset, $args)
{
$sortArray = array();
$sortRule = '';
foreach ($args as $sortField = $sortDir)
{
foreach ($rowset as $offset = $row)
{
$sortArray[$sortField][$offset] = $row[$sortField];
}
$sortRule .= '$sortArray[/'' . $sortField . '/'], ' . $sortDir . ', ';
}
if (empty($sortArray) || empty($sortRule)) { return $rowset; }
eval('array_multisort(' . $sortRule . '$rowset);');
return $rowset;
}

PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
亚洲欧美自拍另类| 99视频资源网| 永久免费网站在线| 天天av综合网| 国产激情网址| 永久免费av片在线观看全网站| 精品成人免费自拍视频 | 国产免费视频| 国产激情自拍| www中文字幕在线观看| 成人免费一区二区三区视频网站| 国产麻豆视频网站| 国产激情三区| 国产美女视频一区二区三区 | 国产视频三区| 欧美性猛交xxxxbbbb| 国产精品你懂的在线观看| 人成在线免费视频| 精品999视频| 国产欧美一区二区三区小说| 欧美卡一卡二| 精品一区二区三区免费站| 免费看av大片| 精品国产高清自在线一区二区三区 | 丁香综合在线| 日本不卡影院| 精品黄色免费中文电影在线播放| 久热久精久品这里在线观看| 在线一区二区三区精品| 国产桃色电影在线播放| 免费看ww视频网站入口| 亚洲人av在线| www网站在线观看| 亚洲欧美精品日韩欧美| 国产精品人人爱一区二区白浆| wwwww在线观看免费视频| 在线色视频网| 99爱在线观看| 夜夜爽视频导航| 91福利在线视频| 精品一区二区三区高清免费不卡| 国产一区精品| 国产精品久久久久永久免费看| 91caoporn在线| 五月综合激情在线| 国产视频福利| 51成人精品网站| 99爱视频在线观看| 亚洲人在线播放| 九九热在线播放| 日本最新在线视频| 国产成人综合美国十次| 国产porny蝌蚪视频| 国产成人精品自线拍| 国产性色视频| 中文资源在线官网| 欧美性猛交xxxx免费看久久| 蜜桃视频中文字幕| 国产麻豆精品一区二区三区v视界| www.三区| 国产精美视频| 亚洲国产日韩成人综合天堂| 久草在线资源福利| 91亚洲精选| 二人午夜免费观看在线视频| 最近最好的中文字幕2019免费 | 精品伦理一区二区| 亚洲成人在线播放| 国产精品一区二区三区四区色| 国产一卡2卡3卡4卡网站免费| 国产a级网站| 国产在线观看av| 在线色视频观看| 国产乱视频在线观看| 国产95在线|亚洲| 交视频在线观看国产| 91在线视频免费看| 91超碰免费在线| 亚洲精品久久久成人| 中文字幕国产视频| 牛牛精品视频在线| 国产区在线看| 国产免费福利| 欧美性猛交xxxx免费看蜜桃| 精品国产二区三区| 国产探花视频在线观看| 青青免费在线视频| 99re热视频在线| 国产精品久久一区二区三区不卡| 另类视频在线| 日本h视频在线观看| 99久久国产视频| √天堂资源中文www| 中文字幕在线影视资源| 男人天堂v视频| 嫩草在线播放| 四虎成人免费| eeuss影院在线播放| av小说在线| 性欧美精品xxxx| 亚洲私人影吧| 日韩国产成人| 黄色国产网站在线播放| 九九视频九九热| 丁香婷婷激情| 国产网站免费观看| 国产福利在线观看| 97国产视频| 四虎成人免费| 九七电影韩国女主播在线观看| 日本在线观看| 久色视频在线观看| 国产精品一区二三区| 2018av男人天堂| 精品麻豆国产| www.狠狠艹| 国产午夜视频在线观看| 中文产幕区在线观看| 开心婷婷激情五月| 尤物网在线观看| 亚洲最新永久观看在线| 国产69精品久久app免费版 | 国产视频精品久久| 国产精品178页| 亚洲妇熟xxxx妇色黄| 久久久久久久久亚洲精品| 99热在线观看免费| 精品久久av| 国产一卡二卡3卡4卡四卡在线| 96久久久久久| 国产蜜臀在线| av在线网页| 国产日韩欧美精品一区二区三区 | 国产亚洲精品久久久久久青梅| 国产黄色片在线播放| av在线播放av| 国产天堂在线| 黄色电影网站在线观看| 亚洲精品在线视频免费| 国产高清视频在线| 中文字幕专区| 激情网站在线| 操人视频91| 国产95在线|亚洲| 国产一卡2卡3卡四卡网站| 亚洲wwwwww| 在线国产91| 中文视频在线| 国产调教视频在线观看| 国内精品不卡| 麻豆国产在线视频| 久久综合精品视频| 尤物在线精品视频| 91亚洲精选| 一二三四区在线观看| 在线观看免费观看在线91| 国产黄色在线网站| 国产xxx在线| 92国产在线视频| 国产精美视频| 精品av中文字幕在线毛片| 91在线超碰| 在线天堂av| 99久久99久久免费精品小说| 91亚洲天堂| 中文日本在线观看| 亚洲综合激情六月婷婷在线观看| 在线伊人免费视频| 日本福利午夜视频在线| 九九99精品| 国产人成在线视频| 在线午夜影院| 国产资源在线看| 国产精品区一区二| 影音先锋日韩| 久久久久久五月天久久久久久久久| 九九热视频免费观看| 日韩av成人| 国产导航在线| 人人九九精品| 国产精品美女一区二区视频| 99re在线视频| 88av在线| 亚洲а∨精品天堂在线| 国产麻豆视频| av在线网页| 国产精品福利视频一区二区三区| 亚洲伊人网在线观看| 国产精品一二三区视频| 精精国产xxxx视频在线动漫| 黄网址在线播放免费| 国产精品久久久久久久牛牛 | 国内a∨免费播放| 国产成人综合美国十次| 四虎中文字幕| 国产对白叫床清晰在线播放| 开心婷婷激情| 日日夜夜中文字幕| 91视频黄色| 国产黄色av免费看|