对于二维数组排序问题,在这里我只介绍两种,第一种就是二维普通数组,格式如:
Array(
array(),
array(),
array(),
)
第二种就是二维对象数组,格式如:
Array(
{},
{},
{},
)
在这里统一的做出处理和分类总结。
首先是普通的二维数组(根据里面的一维数组中的某个字段的值进行排序)排序:
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;
}
第二种是二维对象数组排序,(也就是说数组中的是一系列对象,需要根据对象中的某个字段的值进行排序)
public static function arraySequence($array, $field, $sort = 'SORT_DESC')
{
$arrSort = array();
for($i=0;$i<count($array);$i++){
$arrSort[] = $array[$i]->$field;
}
array_multisort($arrSort,constant($sort),$array);
return $array;
}
注意:
这里不能直接把constant($sort)换为$sort,会报错, constant()函数的作用是返回常量的值,如果常量未定义则返回 NULL。