PHP多維陣列排序

2021-08-08 07:54:54 字數 1895 閱讀 8709

在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 函式 本函式對陣列值轉換為整型並被從最高到最低重新安排,刪除原有的鍵名。...