多維陣列排序

2022-03-30 13:24:20 字數 2064 閱讀 8599

/*

* * @purpose : 二維陣列排序

* @method name : array_sort()

* @parameters : array $array 要排序的二維陣列

* string $row 排序依據列

* string $type 排序型別[asc or desc]

* @return array : $array_temp 排好序的陣列

*/function array_sort($array,$row,$type

)

if($type == 'asc')

elseif($type='desc')

else

return

$array_temp

; }

注意:當需要排序的字段有重複的時候,這種辦法就不適用啦,因為 key 值必須唯一。例如將

$arr_test = [

0 => ['name'=>'name1','age'=>23],

1 => ['name'=>'name2','age'=>25],

2 => ['name'=>'name2','age'=>23],

3 => ['name'=>'name3','age'=>24]

];

以 age 進行排序則不適用,排序後只會返回 3 個元素,因為有 2 個元素的 age 值是一樣的。

可以使用下面的方法來排序:

/*

* *purpose : 二維陣列排序

*@parameters : array $arr 未處理的結果集

* string $row 需要排序的行

*@return : array $arr 排序後的結果

*/function array_sort($arr,$row

)

//將 $arr_tmp 按 age 從小到大排序

array_multisort($arr_tmp, sort_asc, $arr); //

將 $arr 按 $arr_tmp 的值 asc 排序

return

$arr

; }

array_multisort($arr1 , sort_asc, $arr2 , $arr3 ...) 其實就是將$arr1 排序後,後面的陣列都按照 $arr1 的順序就行排序。

例如,需要對下面這個陣列按照 sort欄位公升序進行排序。

//

待排序的陣列

$res =[

13234567890 =>[

0 =>[

'id' => 1,

'phone' => 13234567890,

'answer' => '張三',

'sort' => 1,];

1 =>[

'id' => 2,

'phone' => 13234567890,

'answer' => '男',

'sort' => 3,];

2 =>[

'id' => 3,

'phone' => 13234567890,

'answer' => '25',

'sort' => 2,];

],];

//排序方法如下。

foreach ($res

as$key => $val

)

array_multisort($tmparr, sort_asc, $val

);

$resdata[$key] = $val

;}

array_multisort()的用法可參看

多維陣列排序

在專案的開發應用中,我們幾乎是一直在和陣列打交道。常用的陣列函式有sort ksort 等相關函式,使用它們可以很方便的處理一維陣列,比如按鍵值降序和公升序的排列。但這些函式不是很方便的處理多維陣列。a array array sky blue array tree green 這是乙個簡單的二維陣...

php 多維陣列排序

之前在做乙個功能的時候,必須要把資料放到二維陣列裡並且排序,然後上網找找解決思路,這時候會用到array multisort函式,在那之前我都不知道有這個函式 array multisort 函式對多個陣列或多維陣列進行排序 先來看乙個例項 data array 0 array one 34,two...

PHP多維陣列排序

在php中,對各種陣列排序,歸功於陣列函式 sort ksort rsort asort 等,使用他們進行各種排序,但是用於多維陣列就沒那麼方便簡單。這篇文章介紹 usort 和 array multisort 處理多維陣列排序。對於多維緯度排序使用usort 函式 自定義的比較函式對陣列中的元素進...