当前位置: 首页 > 知识库问答 >
问题:

PHP-if语句中的多个OR运算符

彭朝
2023-03-14

我正在使用我的Symfony项目中的getter和setter。在更改其他字段之前,我必须使用if()语句检查状态字段是否没有特定的值。

代码:

const STATUS_FAILED = 'failed';
const STATUS_PROGRESS = 'progress';
const STATUS_DELETED = 'deleted';

if ($entity->getStatus() !== Entitiy::STATUS_FAILED || 
    $entity->getStatus() !== Entitiy::STATUS_PROGRESS || 
    $entity->getStatus() !== Entitiy::STATUS_DELETED) 
    {
        $entity->setPreviousStatus($entity->getStatus());
    }

我还使用运算符定义了常量。我在想有没有比这更优雅的解决方案。也许is_array()函数,但不知道它能用在这场比赛中吗?

共有1个答案

欧阳学真
2023-03-14

我觉得你应该做这样的事

 $allowed = [self::STATUS_DELETED, self::STATUS_PROGRESS, self::STATUS_FAILED];
 if(!in_array($entity->getStatus(), $allowed)) {
     $entity->setPreviousStatus($entity->getStatus());
 }

数组中传递常量,并检查状态是否为in_array。

 类似资料:
  • 问题内容: 我有一个变量。 我想呼应,如果等于任何下列值,,,,或。有没有办法通过像?? 这样的单个语句来做到这一点? 问题答案: 我认为,使用“ Or”代替“ And”会有所帮助

  • 问题内容: 我有以下代码: 在哪里。 如果第一个陈述为真会怎样? Java还会检查第二条语句吗?因为为了使第一条语句为真,所以HashMap不应包含给定的键,因此如果选中了第二条语句,则将获得。 简单来说,如果我们有以下代码 Java将在第一种情况下检查b是否a为false,a在第二种情况下是否为true? 问题答案: 不会被评估。这非常有用。例如,如果你需要测试String是否为null或为空,

  • 问题内容: 在Python中使用IF语句时,必须执行以下操作才能使“层叠”正常工作。 检查“等于”时,是否有办法使Python接受多个值?例如, 问题答案: if job in (“mechanic”, “tech”): print “awesome” elif job in (“tool”, “rock”): print “dolt” 括号中的值是一个元组。该运营商检查,看是否右手柄元组内的某处

  • 问题内容: 如果MySQL触发器中有多个if语句,那么最佳方法是什么? 目前,我的SQL如下所示: 乍看之下,这似乎行得通。但是,我注意到,当多个(else)if语句为true时,仅第一个语句被执行(例如,就像在PHP中一样)。 我如何只使用多个if,而不必是elseif,以便执行多于1条语句?用相同的动作创建多个触发器是不可能的,至少phpMyAdmin所示。将多个if置于一个触发器中会导致错误

  • 有可能做如下事情吗: 或者: 我知道用很多if-else语句也可以实现同样的目标,但如果它像上面那样工作,看起来会更干净。