中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

php關(guān)于array_multisort多維數(shù)組排序的使用說明

一、先看最簡(jiǎn)單的情況。有兩個(gè)數(shù)組:
復(fù)制代碼 代碼如下:
$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ì)怎樣:
復(fù)制代碼 代碼如下:
$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ù)庫表的一列。而對(duì)應(yīng)著的1,6,3為一數(shù)據(jù)行,9,2,7為另一數(shù)據(jù)行。。。
array_multisort會(huì)先按第一個(gè)數(shù)組(想像成列)排序,如果第一個(gè)數(shù)組(列)的值相同,則按第二個(gè)數(shù)組(列)排序。
具體可以用下面的程式來測(cè)試:
復(fù)制代碼 代碼如下:
$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)。
二、接下來講解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)作字符串去比較,就要寫成:
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ù)組需要排序:
$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ù)組出來:$scores = array(80,70,80,20);$names = array('jake','jin','john','ben');然后array_multisort($scores, SORT_DESC, $names, $guys);就行了還能不能更靈活一點(diǎn)呢,每次想排序都要另外弄些數(shù)組出來嗎?其實(shí)在qeephp的helper_array類里面已經(jīng)封裝得很好,下面是它的兩個(gè)方法,需要的人自己修改一下就可以用了:
復(fù)制代碼 代碼如下:
/**
* 根據(jù)指定的鍵對(duì)數(shù)組排序
*
* 用法:
* @code php
* $rows = array(
* array('id' => 1, '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 語句中的 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技術(shù)php關(guān)于array_multisort多維數(shù)組排序的使用說明,轉(zhuǎn)載需保留來源!

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

主站蜘蛛池模板: 日日噜| 久久成人av电影 | 亚洲精品在线免费看 | 一区二区三区四区在线视频 | 午夜精品久久久久久久99黑人 | 中文字幕免费视频 | 久久久高清 | 韩日精品一区 | 亚洲欧洲精品成人久久奇米网 | 亚洲伊人精品酒店 | 国产精品1区2区 | 久久精品亚洲欧美日韩精品中文字幕 | 亚洲精品二三区 | 日韩欧美在线观看 | 九九精品影院 | 国产98色在线 | 天天干com| 视频一区欧美 | 国产美女高潮 | 91正在播放| 五月天天丁香婷婷在线中 | 日韩欧美亚洲一区 | 精品久久久久一区 | 黄片毛片在线观看 | 亚洲三级在线观看 | 91在线视频网址 | 久草.com | 天天干夜夜操视频 | 91视频在线 | 成人欧美一区二区三区黑人孕妇 | 黄色大片免费观看 | 亚洲精品久久久一区二区三区 | 电影91久久久 | 久久久999国产精品 中文字幕在线精品 | 久久久精品视频免费 | 久久99精品久久久久久国产越南 | av网站在线播放 | 中文字幕在线观 | 精品久久亚洲 | 久久精品一区二区三区四区 | 亚洲成色777777在线观看影院 |