2017-09-27 62 views
1

工作這是我簡單的代碼,我無法理解爲什麼和如何...無法獲得list()函數與陣列

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

希望在您的幫助...!謝謝!

+0

您的預期輸出是什麼? –

+0

你想完成什麼?爲什麼要重置數組中的值? – h2ooooooo

+0

這個腳本是用於獲得從1到90範圍內的唯一隨機數字 – Devilix

回答

1

應該寫成:

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

Demo

您的代碼的現有版本永遠不會更新$range變量(由於某種原因相應的行被註釋掉),這就是爲什麼它不起作用。

+0

是的,現在它是完美的!非常感謝! – Devilix

1

你需要在你的代碼中進行簡單的修改。你的分配列表在side loop中。但是它被放到循環的地方。並且您的可變範圍陣列需要評論

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