Php 如何以较少的重复来完成这个if-then语句?

Php 如何以较少的重复来完成这个if-then语句?,php,Php,我有一件简单的事情,我正试图用更少的重复来完成 默认情况下,我希望显示一个div,但是如果$x==1,则检查$y!=1,如果$y没有,则不要显示该块 不过,我能想到的最好办法是: if($x) { if($y != 1) { echo '<div>display block</div>'; } } else { echo '<div>display block</div>'; }

我有一件简单的事情,我正试图用更少的重复来完成

默认情况下,我希望显示一个div,但是如果$x==1,则检查$y!=1,如果$y没有,则不要显示该块

不过,我能想到的最好办法是:

if($x) {

    if($y != 1) {

        echo '<div>display block</div>';        
    }

} else {

    echo '<div>display block</div>';

}
这似乎有点重复

我知道我可以稍微调整一下,然后做一些类似的事情:

$displayBlock = '<div>display block</div>';

if($x) {

    if($y != 1) {

        echo $displayBlock;     
    }

} else {

    echo $displayBlock;

}
但即便如此,我还是有一种感觉,那就是有一种方法可以完成我现在看不到的“如果有别的话”的整个过程

如何用较少的if语句完成上述任务?所以:如果$x!=1默认值,然后显示displayBlock。如果$x==1,而$y!=1,然后显示显示块。如果$x==1&&$y==1,则不显示显示块。

检查这些

if (!$x || $y != 1) echo $displayBlock;
我们可以简单地写为

if (($x) && ($y != 1)) {
    //Do that thing
} else { if (! $x) {
    //Do that thing 
}
好吧,这是怎么说的

如果条件A做某事,或者如果条件B做某事

哦,有一个手术室

那么,条件A | |条件B

当然,这让我们回到

if((($x) && ($y != 1)) || (!$x)) {

我在里面放了比需要的更多的支架,这样你就可以看到事情的进展了。

+1到虫族的答案-这是钱的问题。为了帮助您在将来解决类似的问题,您可以方便地查看它

您基本上有两个检查:

a$x被强制为真或假 b$y!=一,

因此,从中可以看出,如果$x是假的,或者$y!=1为真,则应显示显示块,因此:

if (!$x || $y != 1) echo $displayBlock;

为了减少代码量,您可以使用更数学的方法而不是逻辑;e、 g

<?php

if($x+$y != 2){echo $displayBlock;}

?>

只有当x和y之和等于2时,显示框才会关闭。

哦,不,只剩下5分钟的时间重新设置上限:-这似乎很容易实现0。o现在尝试一下,我们需要写这些一行吗?为什么我们不能让它更容易阅读?@Incognito:对我来说很容易阅读:-这是一个很简单的条件,不是吗?它很简单,但更难理解,PHP不像Python那样是一种完全在空白处构建的语言。当没有编写代码的维护人员需要阅读时,大括号不会留下任何误解的余地。这是一个,而不是一个真值表。@IgnacioVazquez Abrams干杯!看来我们今天都学到了一些东西。我很感谢你解释这么多“隐姓埋名”
    $y != 1
      T  F
$x T  1  0
   F  1  1
if (!$x || $y != 1) echo $displayBlock;
<?php

if($x+$y != 2){echo $displayBlock;}

?>