相关疑难解决方法(0)

表达式中的变量赋值如何工作?

这是我以前见过的做法,但并不常见:在对值本身进行求值的同时将变量分配给一个值(或者是对表达式本身进行求值?)。例子:

// Outputs "The value is 1"
$value = 1;
if ($var = $value) {
    echo "The value is $var";
}
Run Code Online (Sandbox Code Playgroud)

似乎与以下相同:

$value = 1;
$var = $value;
if ($var) {
    echo "The value is $var";
}
Run Code Online (Sandbox Code Playgroud)

另一个例子:

// Outputs "The value is 1"
$value = 1;
echo "The value is ".$var = $value;
Run Code Online (Sandbox Code Playgroud)

我一直在使用它来缩短我的代码,主要是第一个示例:用于评估第一个变量或表达式,同时将其分配给同一表达式中的另一个变量或表达式。像这样的东西:

if ($status = User::save($data)) {
    echo "User saved.";
}
// do something else with $status
Run Code Online (Sandbox Code Playgroud)

这看起来很基本,但我实际上找不到任何关于此的文档,也许我不知道在哪里查找。在看到它多年后,我最近才弄清楚它是如何工作的,我真的很喜欢使用它,但我不想随意使用它。

它使代码更短,也许对某些人来说不太清楚,但绝对减少了重复性。这种方法有什么注意事项吗?这是否完全安全,或者是否存在可能失败或导致意外行为的情况?这似乎不是一种很常见的做法,所以我希望在开始“疯狂”之前找到一个解释。如果记录,我们将非常感谢指向正确页面的链接。

php variables expression variable-assignment

4
推荐指数
1
解决办法
2027
查看次数

标签 统计

expression ×1

php ×1

variable-assignment ×1

variables ×1