函数方法
<?php
function arraySort($array,$sortRule,$order="asc"){
/**
* $array = [
* ["book"=>10,"version"=>10],
* ["book"=>19,"version"=>30],
* ["book"=>10,"version"=>30],
* ["book"=>19,"version"=>10],
* ["book"=>10,"version"=>20],
* ["book"=>19,"version"=>20]
* ];
*/
if(is_array($sortRule)){
/**
* $sortRule = ['book'=>"asc",'version'=>"asc"]; 条件支持N多个
*/
usort($array, function ($a, $b) use ($sortRule) {
foreach($sortRule as $sortKey => $order){
if($a[$sortKey] == $b[$sortKey]){continue;}
return (($order == 'desc')?-1:1) * (($a[$sortKey] < $b[$sortKey]) ? -1 : 1);
}
return 0;
});
}else if(is_string($sortRule)){
/**
* $sortRule = "book";
* $order = "asc";
*/
usort($array,function ($a,$b) use ($sortRule,$order){
if($a[$sortRule] == $b[$sortRule]){
return 0;
}
return (($order == 'desc')?-1:1) * (($a[$sortRule] < $b[$sortRule]) ? -1 : 1);
});
}
return $array;
}
使用
<?php
$array = [
["book"=>10,"version"=>10],
["book"=>19,"version"=>30],
["book"=>10,"version"=>30],
["book"=>19,"version"=>10],
["book"=>10,"version"=>20],
["book"=>19,"version"=>20]
];
//单条件
$array = arraySort($array,'book','asc');
var_dump[$array];
//多条件
arraySort($array,['book'=>"asc",'version'=>"asc"]);
var_dump[$array];