php - 在 PHP 中仅随机播放相同的值关联数组
问题描述
我的数组是
$rank = [
'20' => 1,
'30' => 1,
'40' => 2,
'50' => 2,
'60' =>3,
];
预期操作
$rank = ['30' => 1,'20' => 1,'50' => 2,'40' => 2,'60' =>3];
我想要随机排名意味着只有排名 1(值)应该洗牌,后来的排名 2 应该洗牌。后来3等等..如何在PHP中做到这一点?
解决方案
第一步可以是在一个数组(比如一个集合)中收集所有值(比如卷号),并按等级很好地分组。
现在,从您的阵列中获取所有独特的排名。
对排名进行排序(跳过这一步,如果排名是连续的,则从 1 开始运行 for 循环)。
循环遍历这个独特的排名,并根据手头的排名获得所有的卷号。
Shuffle() 它们并将它们全部添加到您的结果中。
片段:
<?php
function getRandomizedSortedData($ranks){
$rank_set = [];
foreach($ranks as $roll_no => $rank){
if(!isset($rank_set[ $rank ])){
$rank_set[$rank] = [];
}
$rank_set[$rank][] = $roll_no;
}
$unique_ranks = array_unique($ranks);
sort($unique_ranks);
$result = [];
foreach($unique_ranks as $rank){
$roll_nos = $rank_set[$rank];
shuffle($roll_nos);
foreach($roll_nos as $roll_no){
$result[$roll_no] = $rank;
}
}
return $result;
}
演示: http ://sandbox.onlinephpfunctions.com/code/86c0ead227a06dda5c048dc9316c53788838bd65
推荐阅读
- css-selectors - mPDF - 仅在奇数页上显示背景
- javascript - 如何为属性创建 javascript eventlistner
- python - 在 Python 中读取 .json 文件时的预期对象或值
- mysql - 如何使用计数创建 laravel 多个连接并显示所有数据
- react-native - 无法找到由 `FlipperKit/FlipperKitLayoutPlugin` 依赖的`YogaKit (~> 1.18)` 的规范
- python - 如何在 python 中使用多处理来减少循环执行时间
- javascript - 在 react/react native (redux) 中使用扩展运算符
- javascript - Google 相册应用的“自动”过滤器如何工作?
- php - 尝试创建laravel查询以选择然后如果记录不存在则插入,如果存在于另一个表中则更新
- javascript - js arcgis地图编程