|
有時(shí)候我們需要對(duì)二維數(shù)組的某個(gè)鍵的值進(jìn)行排序,這里就是討論這個(gè)問(wèn)題。我們可以使用array_multisort()這個(gè)函數(shù)。array_multisort() 函數(shù)對(duì)多個(gè)數(shù)組或多維數(shù)組進(jìn)行排序。 參數(shù)中的數(shù)組被當(dāng)成一個(gè)表的列并以行來(lái)進(jìn)行排序 - 這類似 SQL 的 ORDER BY 子句的功能。第一個(gè)數(shù)組是要排序的主要數(shù)組。數(shù)組中的行(值)比較為相同的話,就會(huì)按照下一個(gè)輸入數(shù)組中相應(yīng)值的大小進(jìn)行排序,依此類推。 第一個(gè)參數(shù)是數(shù)組,隨后的每一個(gè)參數(shù)可能是數(shù)組,也可能是下面的排序順序標(biāo)志(排序標(biāo)志用于更改默認(rèn)的排列順序)之一: SORT_ASC - 默認(rèn),按升序排列。(A-Z) SORT_DESC - 按降序排列。(Z-A) 隨后可以指定排序的類型: SORT_REGULAR - 默認(rèn)。將每一項(xiàng)按常規(guī)順序排列。 SORT_NUMERIC - 將每一項(xiàng)按數(shù)字順序排列。 SORT_STRING - 將每一項(xiàng)按字母順序排列。 語(yǔ)法:array_multisort(array1,sorting order,sorting type,array2,array3...) array1:必需。規(guī)定輸入的數(shù)組。 sorting order:可選。規(guī)定排列順序??赡艿闹凳?SORT_ASC 和 SORT_DESC。 sorting type:可選。規(guī)定排序類型??赡艿闹凳荢ORT_REGULAR、 SORT_NUMERIC和SORT_STRING。 array2:可選。規(guī)定輸入的數(shù)組。 array3:可選。規(guī)定輸入的數(shù)組。 字符串鍵名將被保留,但是數(shù)字鍵將被重新索引,從 0 開始,并以 1 遞增??梢栽诿總€(gè)數(shù)組后設(shè)置排序順序和排序類型。如果沒(méi)有設(shè)置,每個(gè)數(shù)組參數(shù)會(huì)使用默認(rèn)值。 下面是一個(gè)例子: 01 <?php 02 03 $arr = ''; 04 05 echo '二維數(shù)組如下:'.'<br / >'; 06 for($i=0; $i<=5; $i++) 07 { 08 $arr[$i]['val'] = mt_rand(1, 100); 09 $arr[$i]['num'] = mt_rand(1, 100); 10 } 11 12 echo '<pre>'; 13 print_r($arr); 14 echo '</pre>'; 15 16 echo '從二維數(shù)組中抽出鍵為val,單獨(dú)成另一個(gè)數(shù)組:'.'<br / >'; 17 foreach ($arr as $key => $row) 18 { 19 $vals[$key] = $row['val']; 20 $nums[$key] = $row['num']; 21 } 22 23 echo '<pre>'; 24 print_r($vals); 25 echo '</pre>'; 26 27 echo '對(duì)其進(jìn)行排序:'.'<br / >'; 28 array_multisort($vals, SORT_ASC, $arr); 29 30 echo '<pre>'; 31 print_r($vals); 32 echo '</pre>'; 33 34 ?> 運(yùn)行結(jié)果: 01 二維數(shù)組如下: 02 Array 03 ( 04 [0] => Array 05 ( 06 [val] => 46 07 [num] => 49 08 ) 09 10 [1] => Array 11 ( 12 [val] => 8 13 [num] => 24 14 ) 15 16 [2] => Array 17 ( 18 [val] => 37 19 [num] => 3 20 ) 21 22 [3] => Array 23 ( 24 [val] => 32 25 [num] => 35 26 ) 27 28 [4] => Array 29 ( 30 [val] => 19 31 [num] => 38 32 ) 33 34 [5] => Array 35 ( 36 [val] => 30 37 [num] => 37 38 ) 39 40 ) 41 從二維數(shù)組中抽出鍵為val,單獨(dú)成另一個(gè)數(shù)組: 42 Array 43 ( 44 [0] => 46 45 [1] => 8 46 [2] => 37 47 [3] => 32 48 [4] => 19 49 [5] => 30 50 ) 51 對(duì)其進(jìn)行排序: 52 Array 53 ( 54 [0] => 8 55 [1] => 19 56 [2] => 30 57 [3] => 32 58 [4] => 37 59 [5] => 46 60 ) 我們將得到一個(gè)按val升序排序的二維數(shù)組。
信息發(fā)布:廣州名易軟件有限公司 http://m.jetlc.com
|