<?php
class Car {
public $speed = 0;
public function speedUp(){
return $this->speed+=10;
}//增加speedUp方法,使speed加10
}
$car = new Car();
$car->speedUp();
echo $car->speedUp();
这样的结果是20,如果去掉$car->speedUp();,结果就是10,去掉了return结果就是0。。。。。。我晕了。。。。。。
你一开始调用$car->speedUp();得时候速度已经加了十了,之后你要显示速度就不要再用echo $car->speedUp();
这样还会再调用一次这个方法就加了两次速度,要显示速度直接用echo $car->speed就行了。
很好,我也成功晕了...
1. speed变量不是执行完一次方法就销毁的,每次$car->speedUp()都会将speed变量增加10,执行代码中执行了两次$car->speedUp()所以得结果自然为20了。
2. 去掉echo上面一行的$car->speedUp();即只在echo时执行了一次自然得10
3. 去掉return即speedUp函数不返回值,不应得到结果0而是得到一个NULL,echo指令打印NULL时不会展示任何信息
你只是不理解echo $car->speedUp();这句而已吧?这句其实执行了三个动作:1、执行$car->speedUp()方法;2、得到$car->speedUp()的返回值;3、echo打印$car->speedUp()的返回值