我正在寻找最简单的方法来检查4个(或更多)随机生成的值是否相同。我在这里有一个do-while循环...
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 :(得分: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));
没有检查错误,但它应该使用可变数量的参数。
答案 1 :(得分: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));
答案 2 :(得分:0)
尝试使用AND运算符
while ($var_a == $var_b && $var_b == $var_c && $var_c == $var_d && $var_d == $var_a);
希望能够发挥作用
此致
希瓦
答案 3 :(得分:0)
无法获得比以下更多的可读性:
$var_a == $var_b && $var_a == $var_c && $var_a == $var_d
答案 4 :(得分: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);
注意我已将mt_rand(1, 2)
更改为mt_rand(1, 4)
以允许超过2个唯一值。