2013-08-04 151 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