出處:
php 中 array_multisort() 可以用來一次對多個陣列進行排序,或者根據某一維或多維對多維陣列進行排序。關聯鍵名保持不變,但數字鍵名會被重新索引。輸入陣列被當成乙個表的列並以行來排序,第乙個陣列是要排序的主要陣列。陣列中的行(值)比較為相同的話就按照下乙個輸入陣列中相應值的大小來排序,依此類推。
但是如果需要排序的陣列是乙個二維陣列,需要按照陣列的鍵值排序,如下面這個二維陣列,需要按照sort鍵名來排序,那麼array_multisort() 就無法直接實現了:
$data[5] = array('volume' => 67, 'edition' => 2);
$data[4] = array('volume' => 86, 'edition' => 1);
$data[2] = array('volume' => 85, 'edition' => 6);
$data[3] = array('volume' => 98, 'edition' => 2);
$data[1] = array('volume' => 86, 'edition' => 6);
$data[6] = array('volume' => 67, 'edition' => 7);
// 準備要排序的陣列
foreach ($data as $k => $v)
array_multisort($edition, sort_asc, $data);
print_r($data);
將輸出:
array
( [0] => array
([volume] => 86
[edition] => 1
)[1] => array
([volume] => 67
[edition] => 2
)[2] => array
([volume] => 98
[edition] => 2
)[3] => array
([volume] => 85
[edition] => 6
)[4] => array
([volume] => 86
[edition] => 6
)[5] => array
([volume] => 67
[edition] => 7
)
其它案例:
$arr=[
array(
'name'=>'小壞龍',
'age'=>28
),array(
'name'=>'小壞龍2',
'age'=>14
),array(
'name'=>'小壞龍3',
'age'=>59
),array(
'name'=>'小壞龍4',
'age'=>23
),array(
'name'=>'小壞龍5',
'age'=>23
),array(
'name'=>'小壞龍6',
'age'=>21
),];
錯誤使用方法:
$arr= array_multisort(array_column($arr,'age'),sort_desc,$arr);
$arr= array_multisort(array_column($arr,'age'),sort_desc,$arr);
print_r($arr);
正確使用方法:
array_multisort(array_column($arr,'age'),sort_desc,$arr);
print_r($arr);
array_multisort(array_column($arr,'age'),sort_desc,$arr);
print_r($arr);
其中 array_column(陣列,陣列中的某個鍵值) 從多維陣列中取出某個鍵值的一列 返回乙個一維陣列;
array_multisort(陣列(一維陣列),排序方式(sotr_asc,sotr_desc),其他陣列(可以是二維的))
PHP 二維陣列按鍵值排序
php 中array multisort 可以用來一次對多個陣列進行排序,或者根據某一維或多維對多維陣列進行排序。關聯鍵名保持不變,但數字鍵名會被重新索引。輸入陣列被當成乙個表的列並以行來排序,第乙個陣列是要排序的主要陣列。陣列中的行 值 比較為相同的話就按照下乙個輸入陣列中相應值的大小來排序,依此...
php二維陣列按照某個鍵值排序
php二維陣列按照某個鍵值排序 arr array name 小壞龍 age 28 array name 小壞龍2 age 14 array name 小壞龍3 age 59 array name 小壞龍4 age 23 array name 小壞龍5 age 23 array name 小壞龍6 ...
php二維陣列按照鍵值排序的方法
1 需要排序的陣列如下 array array array name 手機 brand 諾基亞 price 1050 array name 膝上型電腦 brand lenovo price 4300 array name 剃鬚刀 brand 飛利浦 price 3100 array name 跑步機...