【问题标题】:How to randomize array from the range of indexes?如何从索引范围中随机化数组?
【发布时间】:2019-12-07 14:19:13
【问题描述】:

我目前正在分配房间,如何将数组从索引 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);
     }

【问题讨论】:

    标签: php arrays random


    【解决方案1】:
    • 您可以将数组拆分为两部分。
    • 随机播放第一部分并保持第二部分不变。
    • 合并这两个部分以获得结果。

    片段:

    <?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

    【讨论】:

      【解决方案2】:

      您可以使用这个简单的函数来检索您想要的输出:

      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);
      

      Demo

      这里for循环收集值from-to,然后将它们打乱,然后用引用索引的新值替换旧值。 &amp; 改变你的原始数据数组,所以,你不需要返回任何东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-03
        • 2014-09-09
        • 2012-08-06
        • 1970-01-01
        • 2020-04-26
        • 2021-06-30
        • 2021-12-11
        • 1970-01-01
        相关资源
        最近更新 更多