您好,欢迎光临! 推荐您使用Chrome浏览器访问本站。

PHP二维数组排序的两种方法

1、用自带的array_multisort的方法(会重新建立数字索引)

2、自写array_sort函数:(保留原数字索引)

事例代码如下:


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);
 }
 //print_r($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)
);
echo "<pre>";
print_r($array);
echo "</pre>";

foreach ($array as $key => $val) {
 $tmp[$key] = $val['price'];
}

array_multisort($tmp, SORT_DESC, $array);

echo "<pre>";
print_r($array);
echo "</pre>";
$ShoppingList = array_sort($array, 'price');
echo "<pre>";
print_r($ShoppingList);
echo "</pre>";

参考:http://my.oschina.net/zzqphper/blog/214149
http://www.nowamagic.net/php/php_TwoDimensionalArraySort.php

您可能也喜欢