對2維數組或者多維數組排序是常見的問題,在php中我們有個專門的多維數組排序函數,下面簡單介紹下:
array_multisort(array1,sorting order, sorting type,array2,array3..)是對多個數組或多維數組進行排序的函數。
array1 | 必需。規(guī)定輸入的數組。 |
sorting order | 可選。規(guī)定排列順序。可能的值是 SORT_ASC 和 SORT_DESC。 |
sorting type | 可選。規(guī)定排序類型??赡艿闹凳荢ORT_REGULAR、SORT_NUMERIC和SORT_STRING。 |
array2 | 可選。規(guī)定輸入的數組。 |
array3 | 可選。規(guī)定輸入的數組。 |
參數中的數組被當成一個表的列并以行來進行排序 - 這類似 SQL 的 ORDER BY 子句的功能。第一個數組是要排序的主要數組。數組中的行(值)比較為相同的話,就會按照下一個輸入數組中相應值的大小進行排序,依此類推。
第一個參數是數組,隨后的每一個參數可能是數組,也可能是下面的排序順序標志(排序標志用于更改默認的排列順序)之一:
SORT_ASC - 默認,按升序排列。(A-Z)
SORT_DESC - 按降序排列。(Z-A)
隨后可以指定排序的類型:
SORT_REGULAR - 默認。將每一項按常規(guī)順序排列。
SORT_NUMERIC - 將每一項按數字順序排列。
SORT_STRING - 將每一項按字母順序排列
<?php
function my_sort($arrays,$sort_key,$sort_order=SORT_ASC,$sort_type=SORT_NUMERIC ){
if(is_array($arrays)){
foreach ($arrays as $array){
if(is_array($array)){
$key_arrays[] = $array[$sort_key];
}else{
return false;
}
}
}else{
return false;
}
array_multisort($key_arrays,$sort_order,$sort_type,$arrays);
return $arrays;
}
$person = array(
array('id'=>1,'name'=>'fj','weight'=>100,'height'=>180),
array('id'=>2,'name'=>'tom','weight'=>53,'height'=>150),
array('id'=>3,'name'=>'jerry','weight'=>120,'height'=>156),
array('id'=>4,'name'=>'bill','weight'=>110,'height'=>190),
array('id'=>5,'name'=>'linken','weight'=>80,'height'=>200),
array('id'=>6,'name'=>'madana','weight'=>95,'height'=>110),
array('id'=>7,'name'=>'jordan','weight'=>70,'height'=>170)
);
var_dump($person);
$person = my_sort($person,'name',SORT_ASC,SORT_STRING);
var_dump($person);
$person = my_sort($person,'weight');
var_dump($person);
?>
這里的重點就是,先把要排序的key存到一個一維數組中,然后就可以使用array_multisort()這個函數,將數組按照key進行排序了,當然,這里的排序你完全可以不適用array_multisort()這個函數,僅僅通過foreach遍歷也能達到這個效果,但是既然php開發(fā)者給我們提供了更好的辦法,我們就可以省去不必要的麻煩了。
本文轉載:http://blog.csdn.net/fujiafeihudui/article/details/38583331 ,版權作者所有。
發(fā)表評論