首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >php二维数组随机排序

php二维数组随机排序

作者头像
泽泽社长
发布2023-04-17 15:09:53
发布2023-04-17 15:09:53
2K0
举报
文章被收录于专栏:泽泽社泽泽社

通过查询文档指导array_multisort函数可对多个数组或多维数组进行排序,具体文档请看https://www.php.net/manual/zh/function.array-multisort.php,其实我就是粗略的看了下文档(看着头大),发现并没有随机排序。

我的需求时根据二维数组中的某个值进行降序排序,当值相同时随机排序,于是就写出了如下代码,我觉得挺巧妙的故记录下!

代码语言:javascript
复制
'zhangsan0','fenshu'=>'90'),
        array('name'=>'zhangsan1','fenshu'=>'89'),
        array('name'=>'zhangsan2','fenshu'=>'89'),
        array('name'=>'zhangsan3','fenshu'=>'70'),
        array('name'=>'zhangsan4','fenshu'=>'89'),
    );
foreach ( $all as $key => $row ){
  $idprice[$key] = $row['fenshu'];
  $r[$key] = rand(1,10);
}
array_multisort($idprice, SORT_DESC, $r, SORT_DESC, $all);
print_r($all);
?>

当然如果你想全部随机可以使用shuffle或者array_rand函数。

2020年08月31日经过v2ex的大佬指点,写法改为

代码语言:javascript
复制
'zhangsan0','fenshu'=>'90'),
        array('name'=>'zhangsan1','fenshu'=>'89'),
        array('name'=>'zhangsan2','fenshu'=>'89'),
        array('name'=>'zhangsan3','fenshu'=>'70'),
        array('name'=>'zhangsan4','fenshu'=>'89'),
    );
usort($all, function ($a, $b) {
    if ($a["fenshu"] !== $b["fenshu"]){
        return ($a["fenshu"] > $b["fenshu"])?-1:1;
    }
 return array_rand([-1, 1]) ? 1 : -1;
});

var_dump($all);
?>

linkCard('.post-content','0');

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档