PHP - if 语句中的多个 OR 运算符
PHP - Multiple OR operators in if statement
我在我的 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());
}
我定义了常量,还使用了 OR
运算符。我想知道是否有比这更优雅的解决方案。可能有is_array()
功能,不知道能不能用在这次比赛中?
我认为你应该这样做
$allowed = [self::STATUS_DELETED, self::STATUS_PROGRESS, self::STATUS_FAILED];
if(!in_array($entity->getStatus(), $allowed)) {
$entity->setPreviousStatus($entity->getStatus());
}
在数组中传递你的常量并检查你的状态是否为in_array.
我在我的 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());
}
我定义了常量,还使用了 OR
运算符。我想知道是否有比这更优雅的解决方案。可能有is_array()
功能,不知道能不能用在这次比赛中?
我认为你应该这样做
$allowed = [self::STATUS_DELETED, self::STATUS_PROGRESS, self::STATUS_FAILED];
if(!in_array($entity->getStatus(), $allowed)) {
$entity->setPreviousStatus($entity->getStatus());
}
在数组中传递你的常量并检查你的状态是否为in_array.