二维数组快速排序和利用PHP函数进行二维数组排序

2015-01-05 10:39 来源: 知识网 作者:知识网 网友评论 0 条 浏览次数 1906
array_multisort -- 对多个数组或多维数组进行排序,配合array_slice可应现分页

<?php

function quick_sort($array,$bykey=1,$descorasc=1){ 

if (count($array) <= 1) 

return $array;

$key = $array[0][$bykey];

$key_arr=$array[0];

$left_arr = array();

$right_arr = array();

for ($i=1; $i<count($array); $i++){ 

if ($descorasc==1){  //按降序排

if ($array[$i][$bykey] <= $key){  $left_arr[] = $array[$i];
}else{
$right_arr[] = $array[$i];
}

}else{  //按升序排

if ($array[$i][$bykey] >$key) 
$left_arr[] = $array[$i];
else
$right_arr[] = $array[$i];
}

}

$left_arr = quick_sort($left_arr,$bykey,$descorasc);

$right_arr = quick_sort($right_arr,$bykey,$descorasc);

return array_merge($left_arr,array($key_arr), $right_arr); //return array_merge($left_arr, array($key), $right_arr);

}

$arr=array(array('a'=>'8','b'=>12),array('a'=>'a','b'=>24),array('a'=>'a','b'=>7),array('a'=>'a','b'=>97),array('a'=>'a','b'=>9),array('a'=>'a','b'=>5)); 

$arr=quick_sort($arr,'b'); 

echo '<hr>'; 

var_dump($arr);

$arr=quick_sort($arr,'b',0);
echo '<hr>';

var_dump($arr);

?>



array_multisort -- 对多个数组或多维数组进行排序,配合array_slice可应现分页

<?php 

$data[] = array('volume' => 67, 'edition' => 2); $data[] = array('volume' => 86, 'edition' => 1); $data[] = array('volume' => 85, 'edition' => 6); $data[] = array('volume' => 98, 'edition' => 2); $data[] = array('volume' => 86, 'edition' => 6); $data[] = array('volume' => 67, 'edition' => 7);

foreach($data as $k=>$v){

    $orderby[$k]=$v['valume'];//你想按哪一列值进行排序就写上哪一列

}

if($descorasc=='desc'){

    array_multisort($orderby,SORT_DESC,$data);//

}elseif($descorasc=='acs'){

    array_multisort($orderby,SORT_ASC,$data);

}

//如果配合array_slice的话可实现分页显示

$page=isset($page)?$page:1;

$pagesize=isset($pagesize)?$page:3;

$data=array_slice($data,($page-1)*$pagesize,$pagesize);

?>
上一篇: 下一篇:

相关主题:知识网  网络