本文目录一览:
php二维数组中按某个元素的值排序
//提供一个方法
class lib_BaseUtils{
static $s_field;
static $s_sc;
/**
* php 二维数组按键值排序
* @param array $a 需要排序的数组
* @param string $sort 排序的键值
* @param string $d 默认ASC,带上参后为DESC
* @return boolean
*/
static function array_sort($a, $sort, $d='') {
self::$s_field = $sort;
self::$s_sc = $d;
usort($a, array("lib_BaseUtils","array_sort_callback"));
return $a;
}
//排序回调方法 请勿删除
static function array_sort_callback($a, $b) {
$s_a = self::$s_sc ? $b : $a;
$s_b = self::$s_sc ? $a : $b;
$field = self::$s_field;
switch (true){
case (is_string($s_a[$field]) is_string($s_b[$field])):
return strcmp($s_a[$field], $s_b[$field]);
break;
default:
if($s_a[$field]== $s_b[$field]){
return 0;
}else{
return $s_a[$field]$s_b[$field]?-1:1;
}
}
}
}
调用方法
lib_BaseUtils::array_sort($lists, 'app_down','desc');
php 根据某个字段对二维数组这个数组排序
试编写代码如下:
?php
$array[] = array('id'=1,'price'=50);
$array[] = array('id'=2,'price'=70);
$array[] = array('id'=3,'price'=30);
$array[] = array('id'=4,'price'=20);
foreach ($array as $key=$value){
$id[$key] = $value['id'];
$price[$key] = $value['price'];
}
array_multisort($price,SORT_NUMERIC,SORT_DESC,$id,SORT_STRING,SORT_ASC,$array);
echo 'pre';
print_r($array);
echo '/pre';
?
运行结果:
Array
(
[0] = Array
(
[id] = 2
[price] = 70
)
[1] = Array
(
[id] = 1
[price] = 50
)
[2] = Array
(
[id] = 3
[price] = 30
)
[3] = Array
(
[id] = 4
[price] = 20
)
)
PHP中如何对二维数组按某个键值进行排序
你可以使用usort这个函数进行对$a['list']进行处理
usort($a['list'],function($a,$b){ if($a['app_down'] == $b['app_down'])return 0; return $a['app_down']$b['app_down'] ? 1 : -1; //如果发现结果是升序,1和-1对换下位置,记不太清了});