繁体   English   中英

无法获取List()函数以使用数组

[英]Can't get List() function to working with array

这是我的简单代码,我不明白为什么以及如何...

$len = 5;   // total number of numbers
$min = 1;  // minimum
$max = 90;  // maximum
$range = array(); // initialize array
foreach (range(0, $len - 1) as $i) {
    while(in_array($num = mt_rand($min, $max), $range));
    //$range[] = $num;
    list($br1, $br2, $br3, $br4, $br5) = $range;
}
print_r($range);

//echo $br1." ".$br2." ".$br3." ".$br4." ".$br5;

希望对您有所帮助...! 谢谢!

应写为:

<?php
$len = 5;   // total number of numbers
$min = 1;   // minimum
$max = 90;  // maximum
$range = array(); // initialize array
foreach (range(0, $len - 1) as $i) { // you need to repeat the loop $len times
    // get a new random number in the given range and assign it to $num,
    // do it until the generated number is unique (not present in $range)
    // the loop body is empty, as all the action happens inside its condition
    while(in_array($num = mt_rand($min, $max), $range));

    // append the random number to array
    $range[] = $num;
}
list($br1, $br2, $br3, $br4, $br5) = $range;
echo $br1." ".$br2." ".$br3." ".$br4." ".$br5;

演示

代码的现有版本永远不会更新$range变量(出于某种原因注释掉了相应的行),这就是为什么它不起作用的原因。

您需要在代码中进行简单的修改。您的分配列表在侧循环中。 而且您的可变范围数组需要注释

$len = 5;   // total number of numbers
$min = 1;  // minimum
$max = 90;  // maximum
$range = array(); // initialize array
foreach (range(0, $len - 1) as $i) {
      while(in_array($num = mt_rand($min, $max), $range));
       $range[] = $num;
    }
  list($br1, $br2, $br3, $br4, $br5) = $range;
  print_r($br1);
  print_r($br2);

 //echo $br1." ".$br2." ".$br3." ".$br4." ".$br5;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM