有人可以解释这行代码吗?(逻辑和分配运营商)

Bla*_*lan 1 php

我已经看到了以下代码行,我知道他们做了什么,但我不知道第二行是如何工作的(因此如何将它应用于另一种情况).

$user = User::model()->findByPk(123);
empty($user->profile) and $user->profile = new Profile();
Run Code Online (Sandbox Code Playgroud)

代码尝试从数据库中查找用户,如果没有配置文件,则创建一个新的以供以后使用.

我之前也见过代码,如下所示:

$variable1 = $variable2 = $variable3;
Run Code Online (Sandbox Code Playgroud)

它做了一些比简单分配三个相同的东西更复杂的东西,但我发现不可能搜索这类东西来找出它的任何信息,更不用说找到我遇到的原始代码了.我认为它最初在那里有'和'.有谁知道如何搜索具有多个等号的代码,而不只是if语句?

抱歉这两个问题在一个(并且模糊不清)和可怕的标题(当我知道名字是什么时,我会解决它,如果它像一个tenary陈述)).

Tim*_*tle 5

使用逻辑运算符来跳过代码:当php使用AND运算符计算一行时,如果第一部分为false,则不评估第二部分,因为它不会更改结果.

所以在这种情况下,如果empty()返回true,那么php会评估右侧.如果empty()返回false,则不再进行评估,并且不会影响配置文件.

php手册逻辑运算符页面有一些插图.

多个赋值运算符:赋值运算符将右表达式赋给左侧的变量.

$variable1 = $variable2 = $variable3;
Run Code Online (Sandbox Code Playgroud)

在这种情况下$variable2设置为$variable3 then $variable1的值设置为值$variable2.php手动分配操作员页面涵盖了这一点.