21

我今天遇到了一些有趣的代码。我试图找出这是否是 PHP 的一个功能,或者我是否遗漏了某些东西,但在 Google 上找不到任何东西。可能是因为我不知道它的名字。

代码

if($logo = \Repositories\Logo::getLogoData($id)){
     $logo_href = $logo->link;
}

该变量$logo未在其他任何地方设置。似乎此 if 语句中的表达式正在检查该类方法是否返回任何内容并同时设置$logo要在语句中使用的变量。

这是真的?如果是这样,这到底叫什么!?!

4

2 回答 2

28

您可以在有条件的情况下进行这样的分配。逻辑上发生的事情是,将值分配给$logo然后$logo评估它是否为真。如果为真,则执行条件中的代码。

在循环遍历数据库结果集的情况下,您经常会看到这种分配/评估,但通常我建议在这种常见用例之外避免它,以便在阅读 g 代码时清楚起见。

于 2013-04-18T20:48:08.807 回答
1

是的,这是一个功能。就像是:

$a=$b=5;

但是在这种情况下,想象一下 if as var $a 的 bool 结果。

但是,IDE 经常抱怨这样的解决方案,因为 == vs. = 作为一个非常常见的可能错误源。

于 2013-04-18T20:50:33.170 回答