检查4个值是否相同

时间:2013-08-04 23:18:15

标签: php do-while

我正在寻找最简单的方法来检查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个不同的变量。在这种情况下,检查所有众多组合将是繁琐的。感谢那些对此特定情况做出回应的人。

5 个答案:

答案 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);

http://codepad.org/0vWi3jy5

注意我已将mt_rand(1, 2)更改为mt_rand(1, 4)以允许超过2个唯一值。