2013-06-27 36 views
-2

我一直在寻找通过一些模拟考试和学习PHP的指南和我碰到这个例子就是:* =操作符有什么作用?

$a = array(1, 2, 3); 
foreach ($a as $x) 
    $x *= 2; 
echo $a[0] * $a[1] * $a[2]; 

这将返回6

我的问题是:*=运算符到底意味着什么?

+3

[这是什么符号意味着PHP(http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in -php) –

+2

@MarkBaker有用的问题,但没有提到'* ='。 –

+0

这个例子作为一个教学工具真的很糟糕(它可能被误导或试图证明非引用'foreach'不会使变化保持不变 - 在这种情况下,为什么在没有任何东西的循环后混淆学生额外的乘法与做出这一点?)。谨防该学习指南。 – Jon

回答

3

它的快捷方式:

$x = $x * 2 

可以追溯到C和占自然(从人的角度来看)“乘法语法$ x乘以2“,而不是程序化的”取$ x值,将其乘以2并重新指定回$ x“ - 正如Kernighan和Ritchie在其The C programming language中所述。

它可以适用于所有的数值操作:

$x = $x + 2 <---> $x += 2 
$x = $x - 2 <---> $x -= 2 
$x = $x/2 <---> $x /= 2 
etc... 

顺便说一句,打印的值6它是没有关系的。

3
$x *= 2; 

不过

$x = $x * 2; 
1

$x *= 2;相同$x = $x * 2;(如+=-=.=等)

+1

非常感谢您的回答! –

1

+=*=/=-=是化合物的运营商。在你的代码,它会扩展为:

$x = $x * 2