先来看array_multisort()函数
代码如下
$ar = array(
array("10", 11, 100, 100, "a"),
array( 1, 2, "2", 3, 1)
);
array_multisort($ar[0], SORT_ASC, SORT_STRING,
$ar[1], SORT_NUMERIC, SORT_DESC);
var_dump($ar);
?>
本例中在排序后,第一个数组将变成 "10",100,100,11,"a"(被当作字符串以升序排列)。第二个数组将包含 1, 3, "2", 2, 1(被当作数字以降序排列)。
代码如下array(2) {
[0]=> array(5) {
[0]=> string(2) "10"
[1]=> int(100)
[2]=> int(100)
[3]=> int(11)
[4]=> string(1) "a"
}
[1]=> array(5) {
[0]=> int(1)
[1]=> int(3)
[2]=> string(1) "2"
[3]=> int(2)
[4]=> int(1)
}
}
上面的用现成的函数感觉不是很方便,下面我来推荐一个用户自定义的函数
代码如下 function array_sort($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;
}
测试(它可以对二维数组按照指定的键值进行排序,也可以指定升序或降序排序法(默认为升序),
用法示例:
代码如下$array = array(
array("name"=>"手机","brand"=>"诺基亚","price"=>1050),
array("name"=>"笔记本电脑","brand"=>"lenovo","price"=>4300),
array("name"=>"剃须刀","brand"=>"飞利浦","price"=>3100),
array("name"=>"跑步机","brand"=>"三和松石","price"=>4900),
array("name"=>"手表","brand"=>"卡西欧","price"=>960),
array("name"=>"液晶电视","brand"=>"索尼","price"=>6299),
array("name"=>"激光打印机","brand"=>"惠普","price"=>1200)
);
$ShoppingList = array_sort($array,"price");
print_r($ShoppingList);
冒泡法
function arraysort($data, $order = "asc") {
//asc升序 desc降序
$temp = array ();
$count = count ( $data );
if ($count <= 0)
return false; //传入的数据不正确
if ($order == "asc") {
for($i = 0; $i < $count; $i ++) {
for($j = $count - 1; $j > $i; $j --) {
if ($data [$j] < $data [$j - 1]) {
//交换两个数据的位置
$temp = $data [$j];
$data [$j] = $data [$j - 1];
$data [$j - 1] = $temp;
}
}
}
} else {
for($i = 0; $i < $count; $i ++) {
for($j = $count - 1; $j > $i; $j --) {
if ($data [$j] > $data [$j - 1]) {
$temp = $data [$j];
$data [$j] = $data [$j - 1];
$data [$j - 1] = $temp;
}
}
}
}
return $data;
}
$data = array (7, 5, 3, 8, 9, 1, 5, 3, 1, 24, 3, 87, 0, 33, 1, 12, 34, 54, 66, 32 );
var_dump ( arraysort ( $data ) ); //升序
echo ("
");
var_dump ( arraysort ( $data ,"desc") );//降序
http://m.bbyears.com/jiaocheng/37157.html
推荐访问:phpstorm php面试题 php数组转字符串 php教程