1

有人如何巧妙地检查 4 个变量是否相同?

显然这是行不通的:

if ($var1 === $var2 === $var3 === $var4)

但是,如果不编写大量代码会怎样?

4

6 回答 6

3

一种方法是:

if ($var1 === $var2 && $var2 === $var3 && $var3 === $var4)

没有大量的代码,它可以完成工作。

于 2013-04-26T19:30:04.863 回答
3
if(!array_diff([$var2, $var3, $var4], [$var1])){
     // All equal
}
于 2013-04-26T19:30:33.067 回答
2
if ($var1 === $var2 && $var3 === $var4 && $var1 === $var3)

您不需要检查 2 和 4 是否相等

于 2013-04-26T19:32:36.917 回答
1

使用array_unique您可以检查变量列表中的唯一值数组是否为 1(这意味着它们都相等):

if (count(array_unique([$var1, $var2, $var3, $var4])) == 1)
    // all equal

与语句==中的一长串检查相比,这在比较一长串变量时特别有用。if

于 2013-04-26T19:36:15.520 回答
0

您可以使用 !作为你的主人并使用 &&

if($var1===$var2 && $var1 === $var3 && $var1 === $var4)

但这不会让您知道这 4 个中的哪一个与其他的不同。

于 2013-04-26T19:31:49.187 回答
0

如果您要处理许多变量,我使用了下面的代码并且它可以工作。


$m = 'var'; //Assuming you know the variable name format $var1, $var2, $var3,...

for( $n = 1; $n <= 3; $n++) { //testing for 4 variables

     $v = "$m$n";
     $n++;
     $w = "$m$n";

     if ( $$v !== $$w ) {
       echo "false";
       break;
     }

     $n--;
}

//Breaks and echo "false" as soon as one of the variables is not equal
//Note: increase the iteration for more variable.
于 2013-04-26T22:40:54.970 回答