PHP简写ifelse理解

时间:2016-03-20 14:18:16

标签: php if-statement

我试图从以下简写中找出一些意义

 $state = $account->getCity() ? $account->getCity()->getStates() : null;

我的理解是对的吗?

如果存在$account->getCity(),则将$account->getCity()->getStates()的值分配给$state变量,否则分配为null

我问的原因是因为我收到了错误

  

错误:在非对象

上调用成员函数getCity()

如果代码$state = $account->getCity() ? $account->getCity()->getStates() : null;没有检查$account->getCity()是否为null,那么我该怎么做才能检查它。

我想要实现的输出是

如果$account->getCity()不为空,请将$account->getCity()->getStates()的值分配给$state,否则只需将其设为空

希望我听起来并不太混乱:)。

1 个答案:

答案 0 :(得分:0)

您目前正在使用所谓的"三元运营商"速记。但是,您使用Custommultipart $account->getCity()尝试检查method是否存在,从而导致问题。

更好的做法是使用$account->getCity()isset($account->getCity())来评估它是否存在。值得注意的是(!empty($account->getCity()))将检查它是否存在,isset()将检查它是否存在并且填充了值。如评论所述,您可能还需要检查empty()实际上是object,可以使用object来完成,例如使用is_object($object)

常见问题是可以分配变量或对象,但内容为空,类似于使用(is_object($account) && !empty($account->getCity())。使用$variable = '';进行检查可以帮助您避免在接下来遇到此问题的心痛。

另外一点需要注意的是,虽然三元运算符非常棒,但在提供empty()true条件时最好使用它们。如果您坚持,请尝试在操作中至少使用false代替null