【问题标题】:comparing multiple values to eachother in PHP在PHP中比较多个值
【发布时间】:2013-08-27 09:45:58
【问题描述】:

我想比较 10 个值,当它们不相等时,他会做一些事情......

if ($a!=$b!=$c!=$d!=$e!=$f!=$g!=$h!=$i!=$j)
{ 
 // do some stuff
}

它不起作用......所以我想,我可能无法将多个值相互比较...... 所以我尝试了:

if ($a!=$b&&$a!=$c&&$a!=$d&&$a!=$e&&$a!=$f&&$a!=$g&&$a!=$h&&$a!=$i&&$a!=$j&&
    $b!=$c&&$b!=$d&&$b!=$e&&$b!=$f&&$b!=$g&&$b!=$h&&$b!=$i&&$b!=$j&&
    $c!=$d&&$c!=$e&&$c!=$f&&$c!=$g&&$c!=$h&&$c!=$i&&$c!=$j&&
    $d!=$e&&$d!=$f&&$d!=$g&&$d!=$h&&$d!=$i&&$d!=$j&&
    $e!=$f&&$e!=$g&&$e!=$h&&$e!=$i&&$e!=$j&&
    $f!=$g&&$f!=$h&&$f!=$i&&$f!=$j&&
    $g!=$h&&$g!=$i&&$g!=$j&&
    $h!=$i&&$h!=$j&&
    $i!=$j) 
{
 // do some stuff
}

但他还是什么都没做…… 我100%确定这种情况发生在它们都不相等^^

【问题讨论】:

  • 所以基本上not(a==b==c==d==e...)。为什么所有这些值都不在数组中? :)

标签: php if-statement compare


【解决方案1】:

发现数组:

php 5.4+

if([$a, $b, $c, $e, $f, $g, $h, $i, $j] === array_unique([$a, $b, $c, $e, $f, $g, $h, $i, $j]))
{
   //do stuff
}

php

if(array($a, $b, $c, $e, $f, $g, $h, $i, $j) === array_unique(array($a, $b, $c, $e, $f, $g, $h, $i, $j)))
{
   //do stuff
}

【讨论】:

  • Alma Do Mundo,感谢您向我介绍短数组语法。
  • @TecBrat 感谢您的编辑。有时我忘记了不是所有的 PHP 版本都有最新的
【解决方案2】:

将你的值放在一个数组中,然后使用这个条件:

if (count(array_unique($arr)) != 1) {
    // at least one value is different
}

如果所有值都必须不同,您可以使用:

if (count(array_unique($arr)) === count($arr)) {
    // all values are different
}

【讨论】:

  • 不,OP 希望它们都不平等(请参阅&& 条件)
  • @AlmaDoMundo 这是正确的恕我直言。如果它们都相等,count() 将是 1
  • @AlmaDoMundo 计数将大于 1,如果值不相等,则仅当数组中的所有值都相同时,它才会返回 1,这就是为什么我放了!= 1,我猜没有错……对不起
  • @Jack - 我不确定。假设 $a=1; $b=2; $c=3; $d=1 - 这将不符合 OP 的要求,因为 $a==$d,但 count(array_unique($arr)) 将导致 3
  • @AlmaDoMundo 但是$a != $b,所以并非所有值都相等。
猜你喜欢
  • 2011-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-07
  • 2021-04-03
相关资源
最近更新 更多