我试图从以下简写中找出一些意义
$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
,否则只需将其设为空
希望我听起来并不太混乱:)。
答案 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
。