php多維陣列自定義排序 uasort

2022-05-04 22:00:13 字數 1820 閱讀 9301

php內建的排序函式很多;正反各種排;

常用的排序函式:

sort() - 以公升序對陣列排序

rsort() - 以降序對陣列排序

asort() - 根據值,以公升序對關聯陣列進行排序

ksort() - 根據鍵,以公升序對關聯陣列進行排序

arsort() - 根據值,以降序對關聯陣列進行排序

krsort() - 根據鍵,以降序對關聯陣列進行排序

基本都能滿足需求了;關於這些函式的使用方法就不多囉嗦了;

但是在專案的實際開發中還是會有些更加苛刻的排序需求;今天要介紹的排序函式是: uasort()

uasort主要是用在需要按照自定義的方法並且保留索引關係對多維陣列的排序上;

有如下陣列

$sort_array = array(

"array1" => array(

'word'=>'test1',

'sortnumber'=>1,

),'array3'=>array(

'word'=>'test4',

'sortnumber'=>4,

),'array2'=>array(

'word'=>'test3',

'sortnumber'=>3,

),'array5'=>array(

'word'=>'test5',

),'array4'=>array(

'word'=>'test2',

'sortnumber'=>2,

),);

需求是按照sortnumber以公升序的方式排序;

首先需要寫乙個自定義排序的規則;

// 自定義排序函式

function my_sort($a,$b)

echo '排序前:

';print_r($sort_array);

uasort($sort_array, "my_sort");

echo "排序後:

";print_r ($sort_array);

得到的結果:

排序前:

array

([array1] => array

([word] => test1

[sortnumber] => 1

)[array3] => array

([word] => test4

[sortnumber] => 4

)[array2] => array

([word] => test3

[sortnumber] => 3

)[array5] => array

([word] => test5

)[array4] => array

([word] => test2

[sortnumber] => 2))

排序後:

array

([array5] => array

([word] => test5

)[array1] => array

([word] => test1

[sortnumber] => 1

)[array4] => array

([word] => test2

[sortnumber] => 2

)[array2] => array

([word] => test3

[sortnumber] => 3

)[array3] => array

([word] => test4

[sortnumber] => 4

))

PHP經驗 陣列自定義排序之多維陣列排序

今天遇到乙個問題,是這樣的 給你源資料,排序好後寫入乙個csv檔案,原格式如下 60177 tfido ifmail fidonet 相容郵寄服務 60179 fido fidonet 電子郵件和新聞網路 10082 amandaidx amanda 備份服務 10083 amidxtape ama...

PHP陣列 自定義排序

note 此函式將為array填充新的鍵名,將會刪除原有鍵名 function asc a,b b array 2 6 8 9 1 7 usort b,asc print r b 輸出 array 0 1 1 2 2 6 3 7 4 8 5 9 判斷條件為 return a b?1 1 陣列值按照從...

php二維陣列自定義排序

arr array 0 array id 1,price 200 1 array id 2,price 300 2 array id 3,price 100 3 array id 4,price 120 4 array id 5,price 130 5 array id 6,price 140 6 ...