2 回答

TA贡献1806条经验 获得超8个赞
您可以将数组拆分为两部分。
随机播放第一部分并保持第二部分不变。
合并这两个部分以获得您的结果。
片段:
<?php
$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$randomize = array_slice($input,0,3);
$keep_safe = array_slice($input,3);
shuffle($randomize);
print_r(array_merge($randomize,$keep_safe));
演示: https ://3v4l.org/HVMc8

TA贡献1858条经验 获得超8个赞
您可以使用这个简单的函数来检索您想要的输出:
function arrayRangeRand(&$arr, $s, $e){
$tmp = [];
for($i=$s;$i<=$e;$i++){
$tmp[] = $arr[$i];
}
shuffle($tmp);
foreach($tmp as $ind=>$val){
$arr[$s+$ind] = $val;
}
}
arrayRangeRand($data, $firstInd, $lastInd0);
这里for循环收集值from-to,然后将它们打乱,然后用引用索引的新值替换旧值。&改变你的原始数据数组,所以,你不需要返回任何东西。
- 2 回答
- 0 关注
- 99 浏览
添加回答
举报