1.第一种方式
<?php
/**
* 根据某列对二维数组排序
* @param $arr
* @param $row
* @param string $type
* @return array
*/
function array_sort($arr,$row,$type="asc"){
$arr_temp = array();
//将排序依据列作为数组的键名
foreach ($arr as $v){
$arr_temp[$v[$row]] = $v;
}
//按照键名对数组排序,并保持索引关系
if ($type == "asc"){
ksort($arr_temp);
}elseif ($type =="desc"){
krsort($arr_temp);
}else{
#code...
}
return $arr_temp;
}
$person = array(
array('id'=>2,"name"=>"zhangsan"),
array('id'=>5,"name"=>"lisi"),
array('id'=>3,"name"=>"apple"),
);
$person = array_sort($person,'name');
print_r($person);
/*结果
Array
(
[apple] => Array
(
[id] => 3
[name] => apple
)
[lisi] => Array
(
[id] => 5
[name] => lisi
)
[zhangsan] => Array
(
[id] => 2
[name] => zhangsan
)
)
*/
2.第二种方式
/**
*二维数组根据字段进行排序
*$field 字段名
*SORT_ASC 升序
*SORT_DESC 降序
*/
function arraySequence($array, $field, $sort = 'SORT_DESC')
{
$arrSort = array();
foreach ($array as $uniqid => $row) {
foreach ($row as $key => $value) {
$arrSort[$key][$uniqid] = $value;
}
}
array_multisort($arrSort[$field], constant($sort), $array);
return $array;
}