弦知音2019-02-15 17:14:42 0 5 727
[PHP讨论组]源自课程章节:数组的排序技术详解举报回复话题 ↕
usort()怎么对二维数组进行降序排列
3
0
分享
弦知音 2019-02-16 09:40:403楼
$stu = [ ['name'=>'周天子', 'grade'=>'99'], ['name'=>'汉高祖', 'grade'=>'73'], ['name'=>'秦始皇', 'grade'=>'95'], ]; //输出原始数组 echo var_export($stu, true),'<hr>'; //用户自定义回调来进行排序(降序) usort($stu, function ($m, $n){ return strcmp($n['grade'], $m['grade']); // strcmp()函数 (本函数返回: 0 如果两个字符串相等, <0 如果 string1 小于 string2, >0 如果string1 大于 string2 }); //输出排序后的数组 echo var_export($stu, true),'<hr>';
赞 +1添加回复
刘毅 2019-02-15 21:45:062楼
你可以参考一下,
<?php
function test($array=array(),$key='',$paixu=true){
$result=array();
foreach($array as $k => $v){
$values[$k]= isset($v[$key]) ? $v[$key] : '';
}
unset($v);
$paixu ? asort($values) : arsort($values);
foreach ($values as $k => $v){
$result[$k] = $array[$k];
return $result;
$data = array(
array('post_id'=>1,'title'=>'如何学好PHP','reply_num'=>582),
array('post_id'=>2,'title'=>'PHP数组常用函数汇总','reply_num'=>182),
array('post_id'=>3,'title'=>'PHP字符串常用函数汇总','reply_num'=>982),
);
$paixuhou=test($data,'reply_num',true);
echo "<pre>";
print_r($paixuhou);
?>
赞 +0添加回复
刘毅 2019-02-15 21:44:361楼
是rsort(),你函数都用错了。
忽略键名根据值排序, sort()升序,rsot()降序, usort()回调, 我是问用回调的方式怎么降序,不是函数用错了。
弦知音 2019-02-16 09:40:403楼
赞 +1添加回复
刘毅 2019-02-15 21:45:062楼
你可以参考一下,
<?php
function test($array=array(),$key='',$paixu=true){
$result=array();
foreach($array as $k => $v){
$values[$k]= isset($v[$key]) ? $v[$key] : '';
}
unset($v);
$paixu ? asort($values) : arsort($values);
foreach ($values as $k => $v){
$result[$k] = $array[$k];
}
return $result;
}
$data = array(
array('post_id'=>1,'title'=>'如何学好PHP','reply_num'=>582),
array('post_id'=>2,'title'=>'PHP数组常用函数汇总','reply_num'=>182),
array('post_id'=>3,'title'=>'PHP字符串常用函数汇总','reply_num'=>982),
);
$paixuhou=test($data,'reply_num',true);
echo "<pre>";
print_r($paixuhou);
?>
赞 +0添加回复
刘毅 2019-02-15 21:44:361楼
是rsort(),你函数都用错了。
赞 +0添加回复