<?php
function double($i)
{
return $i*2;
}
$b = $a = 5;
$c = $a++;
$e = $d = ++$b;
$f = double($d++);
$g = double(++$e);
$h = $g += 10;
echo $f."<br>",
$g."<br>",
$h."<br>";
?>
上面这段php程序语句输出的为什么是:“12<br>24<br>24<br>”。
而不是“14<br>26<br>26<br>”。在程序的第八行中不是已经把$d定义为7了么?怎么$f会输出“2*6=12”,而不是"2*7=14"。
<?php
function double($i)
{
return $i*2;
}
$b = $a = 5; // $a=$b=5
$c = $a++; // $c=5, $a=6
$e = $d = ++$b; // $e=$d=$b=6
$f = double($d++); // $f=6*2=12, $d=7(传过去的是$d增加前的值6)
$g = double(++$e); // $g=7*2=14, $e=7
$h = $g += 10; // $h=$g=24
echo $f."<br>", // 12
$g."<br>", // 24
$h."<br>"; // 24
?>
这个问题其实就是$i++和++$i增1的循序问题
$i++是先取$i的值,然后++$i
++$i则是先++$i,然后再取$i的值
所以
$a = $b = 1;
$c = $a++; // $c = 1
$d = ++$b; // $d = 2
...// $a = $b = 2
不管是$i++还是++$i对$i来说效果都是一样的,都自增了1
只不过二者返回的值不同,前者是返回增加前的值,后者是返回增加后的值