在php中,對各種陣列排序,歸功於陣列函式 sort()、ksort()、rsort()、asort()...等,使用他們進行各種排序,但是用於多維陣列就沒那麼方便簡單。這篇文章介紹 usort() 和 array_multisort() 處理多維陣列排序。
對於多維緯度排序使用usort()函式(自定義的比較函式對陣列中的元素進行排序);
如:對2緯陣列的排序
$arr=[
['k1'=>'11','k2'=>'d'],
['k1'=>'64','k2'=>'dd'],
['k1'=>'32','k2'=>'ddd']
];
根據陣列裡面k1的值小到大排序。
function num_sort($x,$y)elseif($x['k1']
}usort($arr,'num_sort');
得到的結果可以看出對陣列k1小到大排序好了
如果想保持 鍵值關係,可以用 uasort() 函式
usort 函式使用自定義函式 對陣列排序,自定義函式可以根據自己的需求去寫,如這次我想要根據k2的長度來排序
三緯陣列同樣用法,主要看自定義函式的編寫
$arr = [
[['k1'=>'4','k2'=>'dd']],
[['k1'=>'15','k2'=>'ddd']],
[['k1'=>'42','k2'=>'d']],
];function num_sort($x,$y)elseif($x[0]['k1']
}usort($arr,'num_sort'); //對三緯陣列 的k1值排序
多緯陣列的排序也可以用 array_multisort() 函式
array_multisort() 要先提取出至少乙個 一緯陣列,根據一緯陣列的排序來排序多維陣列
array_multisort(array1,array2,array3...)
$arr = [
['k1'=>'4','k2'=>'a'],
['k1'=>'41','k2'=>'b'],
['k1'=>'15','k2'=>'c'],
['k1'=>'4','k2'=>'d'],
];foreach ($arr as $key => $value)
array_multisort($num, sort_asc,$str,sort_desc,$arr); //先提取出一緯陣列,按照$num公升序,如果元素相同,則按照$str降序
總結: usort() 更靈活,自定義函式排序,array_multisort() 先提取出一緯陣列,根據一緯陣列排序。
php 多維陣列排序
之前在做乙個功能的時候,必須要把資料放到二維陣列裡並且排序,然後上網找找解決思路,這時候會用到array multisort函式,在那之前我都不知道有這個函式 array multisort 函式對多個陣列或多維陣列進行排序 先來看乙個例項 data array 0 array one 34,two...
php多維陣列排序
問題 有這樣乙個陣列 arr 1 array 3 2 array 3 要求按照時間20140626 190411來排序 這個用到了php的多維陣列排序array mutisort 函式,用法如下 foreach arr as key row 0 9 row 0 match 使用正則表達從 r1822...
Php 陣列排序之多維陣列排序
php 中最強大的型別非陣列莫屬!任何型別的資料都可以用陣列來儲存。一維陣列排序 sort 函式 本函式對陣列值轉換為整型並被從最低到最高重新安排,刪除原有的鍵名。成功時返回 true,或者在失敗時返回 false.rsort 函式 本函式對陣列值轉換為整型並被從最高到最低重新安排,刪除原有的鍵名。...