为了账号安全,请及时绑定邮箱和手机立即绑定

如何从索引范围中随机化数组?

如何从索引范围中随机化数组?

PHP
SMILET 2022-06-11 18:11:42
我目前正在分配房间,如何将数组从索引 1 随机化到 3?我的数组中有 4 个索引。$arrayroom = array("1","2","3","4");$check1 = "SELECT COUNT(*) AS Total FROM grade_7 WHERE Room_Number = '1' ";    $ch= mysqli_query($conn,$check1);    $d = mysqli_fetch_assoc($ch);    if($d['Total'] < 40){        $room = $arrayroom[0];     }     else{        $room = array_rand($arrayroom);     }
查看完整描述

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


查看完整回答
反对 回复 2022-06-11
?
猛跑小猪

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,然后将它们打乱,然后用引用索引的新值替换旧值。&改变你的原始数据数组,所以,你不需要返回任何东西。


查看完整回答
反对 回复 2022-06-11
  • 2 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号