废话不多说 直接贴代码 复制粘贴,直接可以用,适合作为共用方法。
/**
* 对数组进行排序
* @param $array 数据数组
* @param $cond 条件(结构为:array(array(列名1, SORT_ASC/SORT_DESC, SORT_STRING/SORT_NUMERIC),
* array(列名1, SORT_ASC/SORT_DESC, SORT_STRING/SORT_NUMERIC)
* ),第三参数表示按照string还是数字进行排序,可不传,可为空,默认为类型不变进行排序)
* -- by jianghao 2016-11-10
*/
function array_sort($array, $cond)
{
if(!is_null($array) && count($array) > 0)
{
if(count($cond) == 0)
{
return $array;
}
else
{
//排序列表
$sortList = array();
//排序字段类型列表
$typeList = array();
foreach($cond as $sort)
{
$sortList[] = !empty($sort[1]) ? $sort[1] : SORT_DESC;
$typeList[] = isset($sort[2]) ? $sort[2] : SORT_REGULAR;
}
//值列表
$valueList = array();
foreach($cond as $sort)
{
$columnName = $sort[0];
$values = array();
foreach($array as $index => $row)
{
$values[] = $row[$columnName];
}
$valueList[] = $values;
}
$args = array();
for($i = 0; $i < count($cond); $i++)
{
$args[] = &$valueList[$i];
$args[] = &$sortList[$i];
$args[] = &$typeList[$i];
}
$args[] = &$array;
call_user_func_array('array_multisort', $args);
return $array;
}
}
else
{
return array();
}
}