0

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

4

5 回答 5

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

没有检查错误,但它应该使用可变数量的参数。

于 2013-08-04T23:57:20.167 回答
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));
于 2013-08-04T23:21:49.587 回答
0

尝试使用 AND 运算符

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

希望这会奏效

问候

湿婆

于 2013-08-04T23:22:07.957 回答
0

没有比以下更具可读性的了:

$var_a == $var_b && $var_a == $var_c && $var_a == $var_d
于 2013-08-04T23:24:28.937 回答
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 个唯一值。

于 2013-08-04T23:27:32.410 回答