$data = array(
array(
'id' => 5698,
'first_name' => 'Bill',
'last_name' => 'Cxy',
),
array(
'id' => 4767,
'first_name' => 'Steve',
'last_name' => 'Axy',
),
array(
'id' => 3809,
'first_name' => 'Mark',
'last_name' => 'Zxy',
)
);
// 方法一
//根据字段last_name对数组$data进行降序排列
$last_names = array_column($data,'last_name');
//array_multisort($last_names,SORT_DESC,$data);
//var_dump($data);
// 方法二
// 二维数组排序算法函数,能够具有通用性,可以调用php内置函数(array_multisort())
// 二维数组排序 $arr是数据 $keys是排序的健值 $order是排序规则,1是升序,0是降序
function arraySort($arr, $sk, $order=0) {
if (!is_array($arr)) {
return false;
}
$skValue = array();
foreach($arr as $key => $val) {
$skValue[$key] = $val[$sk];
}
if($order == 0){
asort($skValue);
}else {
arsort($skValue);
}
reset($skValue);
foreach($skValue as $key => $val) {
$keySort[$key] = $key;
}
$newArray = array();
foreach($keySort as $key => $val) {
$newArray[$key] = $arr[$val];
}
return $newArray;
}
$sk = 'last_name';
$newArr = arraySort($data, $sk);
var_dump($newArr);
// 结果
array(3) {
[1]=>
array(3) {
["id"]=>
int(4767)
["first_name"]=>
string(5) "Steve"
["last_name"]=>
string(3) "Axy"
}
[0]=>
array(3) {
["id"]=>
int(5698)
["first_name"]=>
string(4) "Bill"
["last_name"]=>
string(3) "Cxy"
}
[2]=>
array(3) {
["id"]=>
int(3809)
["first_name"]=>
string(4) "Mark"
["last_name"]=>
string(3) "Zxy"
}
}