以下两个片段是否做同样的事情?

时间:2018-02-20 17:22:23

标签: php

以下是:

$variable = $variable = $variable = $variable = '';

与:

相同
$variable = ''; 
$variable = '';
$variable = '';
$variable = '';

第一个例子是一个更紧凑的方法来实现相同的结果还是其他事情发生了?

1 个答案:

答案 0 :(得分:1)

是的,这些实现了完全相同的结果。运行其中任何一个代码块后,您将一个变量$variable设置为空字符串('')。

重复重新分配相同的变量毫无意义,但即使使用多个不同的变量,它的工作方式也相同。例如(来自评论)

$variable1 = $variable2 = $variable3 = $variable4 = '';

将导致所有这些不同的变量设置为相同的值。这样做的原因是赋值表达式求值为赋值。因此,您展示的第一个代码块的评估方式如下:

$variable = ($variable = ($variable = ($variable = '')));

每个$variable = ...首先评估赋值运算符的右侧,然后将该值赋给左侧。最终的$variable = ''表达式求值为'',它从右到左填充赋值链中的所有变量。

虽然这是一种更紧凑的方式来实现相同的结果,但这样做的好处值得怀疑,因为很多人会认为这会降低代码的可读性。