我今天遇到了一些有趣的代码。我试图找出这是PHP的一个功能,还是我遗漏了一些东西,但却无法在Google上找到任何内容。可能是因为我不知道它的名字。
代码
if($logo = \Repositories\Logo::getLogoData($id)){
$logo_href = $logo->link;
}
变量$logo
未在其他任何位置设置。看起来这个if语句中的表达式正在检查该类方法是否返回任何内容并同时设置要在语句中使用的变量$logo
。
这是真的吗?如果是这样,世界上有什么叫做这个!?!
答案 0 :(得分:23)
您可以在条件中进行类似的任务。逻辑上发生的是将值分配给$logo
,然后评估$logo
是否真实。如果它是真实的,则条件中的代码执行。
在循环访问数据库结果集的情况下,您经常会看到这种分配/评估,但通常我建议在读取g代码时为了清晰起见,应避免在这种常见用例之外。
答案 1 :(得分:1)
是的,这是一个功能。就像:
$a=$b=5;
但在这种情况下,想象一下如果作为var $ a的布尔结果。
然而,由于== vs = =作为一种非常常见的错误来源,IDE会被用来抱怨这样的解决方案。