通过查询文档指导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');