if ($array[$i] <=$key){
$left_arr[] =$array[$i];
}else{
$right_arr[] =$array[$i];
}
}
$left_arr = quickSort($left_arr);
$right_arr = quickSort($right_arr);
return array_merge($left_arr,array($key),$right_arr);
}
/**
* 按照元素的值进行排序
* strOrder 为排列的顺序 asc 升序 desc 降序
*/
function sortByVal($arr,$strOrder='asc')
{
if(!is_array($arr) ||count($arr)==0)
{
return $arr;
}
$arrReturn =array();
foreach($arr as $key=>$val)
{
$arrKey[] =$key;
$arrVal[] =$val;
}
$count =count($arrVal);
if($count)
{
//创建key的顺序数组
for($key=0;$key<$count;$key++)
{
$arrKeyMap[$key] =$key;
}
//对值进行排序
for($i=0;$i<$count;$i++)
{
for($j =$count-1;$j>$i;$j--)
{
//<从小到大排列 升降在这修改
$bol =$strOrder =='asc' ?$arrVal[$j]<$arrVal[$j-1] :$arrVal[$j]>$arrVal[$j-1];
if($bol){
$tmp =$arrVal[$j];
$arrVal[$j] =$arrVal[$j-1];
$arrVal[$j-1] =$tmp;
//值的冒泡排序,引起key的数组的交互
$keytmp =$arrKeyMap[$j];
$arrKeyMap[$j] =$arrKeyMap[$j-1];
$arrKeyMap[$j-1] =$keytmp;
}
}
}
if(count($arrKeyMap))
{
foreach ($arrKeyMap as $val)
{
$arrReturn[] =$arrKey[$val];
}
}
return $arrReturn;
}
}
/**
* 使用原生的函数进行数组按照值进行排列
*/
function arraySortByVal($arr,$keys,$type='asc'){
$keysvalue =$new_array =array();
foreach ($arr as $k=>$v){
$keysvalue[$k] =$v[$keys];
}
if($type =='asc'){
asort($keysvalue);
}else{
arsort($keysvalue);
}
reset($keysvalue);
foreach ($keysvalue as $k=>$v){
$new_array[$k] =$arr[$k];
}
return $new_array;
对于下面的2个对于array的值进行排序的方法一个是自己实现的一个是使用了原生的PHP函数的,其实排序对于少量数据一般就单页的数据量的数据还是可以的,如果涉及到大量的数据的排序,建议可以整合到MYSQL的基础类中来进行。