我有一個數組的數組,我需要做一個隨機數,然後檢查數字是否不在數組中,如果它是另一個隨機數,然後檢查該數字,看看它的數量在數組中。隨機數不是數組
示例。
array = 1, 2, 4, 5, 7
rand(1, 7) = 3 or 6
如果蘭特(1,7)= 1,2,4,5或7,直到它返回3或6
人知道如何在PHP做到這一點,將再次運行?
我有一個數組的數組,我需要做一個隨機數,然後檢查數字是否不在數組中,如果它是另一個隨機數,然後檢查該數字,看看它的數量在數組中。隨機數不是數組
示例。
array = 1, 2, 4, 5, 7
rand(1, 7) = 3 or 6
如果蘭特(1,7)= 1,2,4,5或7,直到它返回3或6
人知道如何在PHP做到這一點,將再次運行?
您可以簡單地生成隨機數,並檢查它是否已經陣列
$in = [1, 4, 7, 9];
do {
$rand = rand($min, $max);
} while(in_array($rand, $in));
echo $rand, ' is random, but not in the input array';
上面的代碼生成一個隨機整數,它是在內部和$min
定義$max
界限英寸如果該值已經存在於數組中,則會提取一個新的隨機值並將其與輸入數組進行比較。
注意:雖然上面是最小的工作代碼,如果你輸入數組包含了所有可能的值(感謝@Action Dan)您可以創建一個無限循環。你沒有在你的問題中說明這是否可能。如果有可能,你需要解決這個問題。通過限制最大嘗試次數或驗證輸入數組,然後發出錯誤消息或增加rand
的第二個參數。
例(驗證,建議僅用於小型陣列):
$in = [1,2,3,4,5];
$min = 1;
$max = 5;
if(range($min, $max) === $in) {
echo 'No possible value in range';
exit;
}
// code from above
這裏唯一的建議是有一個潛在的取決於輸入,以永久循環。我建議一個迭代的計數器,如果該計數器變成(比方說)輸入數組長度的一半,則切換到簡單地找到不在數組中的最小可用數字或其他一些倒退。 –
這很好。謝謝。 – user3646863
感謝@ActionDan添加了一個關於該節點的節點,並在小陣列中添加了一個小節點。如果您有更好的建議,請隨時更改。 – Rangad
<?php
$numbers = array(1,2,3,4,5,6,7);
$rand = rand(1,10);
if (in_array($rand, $numbers))
{
echo "Match found";
}
else
{
echo "Match not found";
}
echo "<br />" . $rand;
?>
在此示例中,我有$蘭特故意有超過7,只是爲了確保代碼工作很好,「比賽未找到「。
in_array()函數檢查$ rand的值是否存在於$ numbers中,如果爲true ..如果不打印」打印匹配「,則打印」匹配找到「。
希望這有助於..
**歡迎來到StackOverflow ** - 答案應該提供一些背景參考和/或描述爲什麼事情工作和如何。請提供更多有關您答案的信息。 –
我想很多本網站的用戶知道如何在PHP –
這個怎麼做到這一點? http://www.php.net/manual/en/function.in-array.php – bloodyKnuckles
不寫你想要的代碼: 1.生成一個隨機數 2.雖然數字存在於數組中 3。生成另一個隨機數並返回2. 4.你有你的號碼 –