PHP array_multisort 簡單實用技巧

<?php

/*
* 參數說明:
* @param array $array1 比較的數組
* @param mixed 排序的順序,有兩種(SORT_ASC, SORT_DESC)默認是SORT_ASC, 可省略
* @param mixde 排序的標誌,有六種(SORT_REGULAR,SORT_NUMERIC,SORT_STRING,SORT_LOCALE_STRING ,SORT_NATURAL,SORT_FLAG_CASE )默認 SORT_REGULAR;
* @param array … 可以使用其他的數組,但是和之前的數組的數量相同,不相同會報錯
*
* @return array
*/

//0,可以一次對多個數組排序,或者根據某一維或多維對多維數組進行排序
$array1 = [1,2,12,4,1212,6];
$array2 = [‘qwe’, ‘asd’,’b’,’g’,’c’];
$array0 = [23,34,12,3333,332,23423];
//1,一個數組下用法
//array_multisort($array1, SORT_DESC);

/**
array(6) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(12)
[3]=>
int(4)
[4]=>
int(1212)
[5]=>
int(6)
}*/

//1,兩個數組下用法(所有數組的使用都是按第一個數組排序順序來排序,如果數組個數不對會報錯,可以自行測試下)
array_multisort($array1, $array0);
/**
array(6) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(4)
[3]=>
int(6)
[4]=>
int(12)
[5]=>
int(1212)
}
array(6) {
[0]=>
int(23)
[1]=>
int(34)
[2]=>
int(3333)
[3]=>
int(23423)
[4]=>
int(12)
[5]=>
int(332)
}
*/

//2,對於二維數組的排序,比如我們要按年齡來排序一個二維數組
$result = [
[‘name’ => ‘tom1’, ‘age’ => 20],
[‘name’ => ‘tom2’, ‘age’ => 25],
[‘name’ => ‘tom3’, ‘age’ => 10],
[‘name’ => ‘tom4’, ‘age’ => 30],
[‘name’ => ‘tom5’, ‘age’ => 10],
];

//2,對於二維數組的排序,比如我們要按年齡來排序一個二維數組
$result = [
[‘name’ => ‘tom1’, ‘age’ => 20],
[‘name’ => ‘tom2’, ‘age’ => 25],
[‘name’ => ‘tom3’, ‘age’ => 10],
[‘name’ => ‘tom4’, ‘age’ => 30],
[‘name’ => ‘tom5’, ‘age’ => 10],
];

//(1) ,以前的思路先拿到年齡欄位的一位數組,排序下,再循環兩次循環獲取其對應的值。

//現在使用下array_multisort

$age = array_column($result, ‘age’);

array_multisort($age,$result);
/*
rray(5) {
[0]=>
int(10)
[1]=>
int(10)
[2]=>
int(20)
[3]=>
int(25)
[4]=>
int(30)
}
array(5) {
[0]=>
array(2) {
[“name”]=>
string(4) “tom3”
[“age”]=>
int(10)
}
[1]=>
array(2) {
[“name”]=>
string(4) “tom5”
[“age”]=>
int(10)
}
[2]=>
array(2) {
[“name”]=>
string(4) “tom1”
[“age”]=>
int(20)
}
[3]=>
array(2) {
[“name”]=>
string(4) “tom2”
[“age”]=>
int(25)
}
[4]=>
array(2) {
[“name”]=>
string(4) “tom4”
[“age”]=>
int(30)
}
}
*/