PHP语法:$a = $b = 1;

3

Is

$a = 1;
$b = $a;

等同于编写这个吗?

$a = $b = 1;
第二个示例无论$a和$b是否已经分配了值,都将1作为值放入它们。

1
是的,它会 <填充器 /> - Mark Baker
2
多重赋值(带有附加运算符)不应出现在可维护的代码中。 - Mike B
1
@JasonMcCreary,我添加了additional-operator限定符,以便这个问题不会因为运算顺序而变成有趣但无用的PHP琐事/技巧。为什么这段代码会返回它所返回的内容?$x++-2/$b+=-$x++(^2*2)+=5 - Mike B
2
@MikeB - 那段代码让人内心深处有种想要打那些在生产环境中写它的人的冲动。 :P - user554546
1
@JasonMcCreary $dude = $wheres = $my = $car = 0; 是可以的。$dude = $wheres = $my = $car + 1 = 0; 不可以。 - Mike B
显示剩余2条评论
2个回答

5

是的,PHP会把1放到$b里,然后将$b的值放入$a,即1

由于第一次赋值是$b = 1,下一步是$a = $b,因此没有歧义。


5

引用文档:

赋值表达式的值是被赋的值。也就是说,"$a = 3" 的值是 3。这使你能够做一些巧妙的事情:

<?php

$a = ($b = 4) + 5; // $a is equal to 9 now, and $b has been set to 4.

?>
所以,回答你的问题,赋值操作$b = 1的结果是1,因此,$a = $b = 1会将$b = 1的值(也就是1)赋给$a。 然而,滥用这种写法可能导致代码难以阅读。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,