2013-08-04 148 views
0

我正在尋找最簡單的方法來檢查4個(或更多)隨機生成的值是否相同。我在這裏有一個do-while循環...檢查4個值是否相同

do { 
    $var_a = mt_rand(1, 2); 
    $var_b = mt_rand(1, 2); 
    $var_c = mt_rand(1, 2); 
    $var_d = mt_rand(1, 2); 
} while ($var_a == $var_b == $var_c == $var_d); 

PHP雖然不喜歡$var_a == $var_b == $var_c == $var_d部分。我知道我可以單獨檢查$ var_a,$ var_b等的每個組合,看看它們是否相等,但有沒有更乾淨的方法來做到這一點?

編輯:大多數給出的答案/評論都適用於這種情況。我想知道你可以檢查的時間,比如...... 20個不同的變量。在這種情況下,檢查所有衆多組合將會非常繁瑣。感謝那些已經迴應了這個特殊情況的人。

+0

使用或:($ var1 == $ var2或$ var1 == $ var3)etc; –

+0

可能重複的[http://stackoverflow.com/questions/4702852/php-testing-whether-three-variables-are-equal][1] [1]:http://stackoverflow.com/questions/4702852/php-testing-whether-three-variables-are-equal – kwarunek

+0

你只能通過'mt_rand(1,2)' – Musa

回答

0

試試這個:

do { 
    $var_a = mt_rand(1, 2); 
    $var_b = mt_rand(1, 2); 
    $var_c = mt_rand(1, 2); 
    $var_d = mt_rand(1, 2); 
} while (($var_a == $var_b)&&($var_a == $var_c)&&($var_a == $var_d)); 
+0

適用於這種特定的情況。 – gtilflm

0

嘗試使用AND運算

while ($var_a == $var_b && $var_b == $var_c && $var_c == $var_d && $var_d == $var_a); 

希望這是要去工作

問候

溼婆

0

不能得到太多米礦石可讀比:

$var_a == $var_b && $var_a == $var_c && $var_a == $var_d 
0

你可以使用一個數組

<?php 
do { 
    $var = array(); 
    $var[] = mt_rand(1, 4); 
    $var[] = mt_rand(1, 4); 
    $var[] = mt_rand(1, 4); 
    $var[] = mt_rand(1, 4); 
} while (count(array_unique($var)) != 4); 
var_dump($var); 

http://codepad.org/0vWi3jy5

注意我改變mt_rand(1, 2)mt_rand(1, 4)允許超過2個唯一值。

+0

雖然我需要變量爲「$ var_a」,「$ var_b」等。 – gtilflm

+0

然後在完成後將它們加載出陣列。看看'list'。 – Dave

+0

這項工作? $ var_a是$ var [0],$ var_b是$ var [1],等等。 – gtilflm

1

這個怎麼樣?

function checkifequal() { 
    if (func_num_args() <= 1) 
    return true; 
    else 
    for ($i = 1; $i < func_num_args(); $i++) 
     if (func_get_arg[0] != func_get_arg[$i]) 
     return false; 
    return true; 
} 

do { 
    $var_a = mt_rand(1, 2); 
    $var_b = mt_rand(1, 2); 
    $var_c = mt_rand(1, 2); 
    $var_d = mt_rand(1, 2); 
} while (!checkifequal($var_a, $var_b, $var_c, $var_d)); 

未檢查錯誤,但它應該使用可變數量的參數。

+0

似乎它對大量變量很有用。謝謝! – gtilflm