问答详情
源自:2-4 PHP类和对象之定义类的方法

大神点进来瞧瞧!

<?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。。。。。。我晕了。。。。。。

提问者:a10282465693872396 2016-09-10 22:40

个回答

  • qq_冷暖自知_6
    2016-11-01 15:48:16

     你一开始调用$car->speedUp();得时候速度已经加了十了,之后你要显示速度就不要再用echo $car->speedUp();

    这样还会再调用一次这个方法就加了两次速度,要显示速度直接用echo $car->speed就行了。


  • 枫中看雨
    2016-09-11 21:52:05

    很好,我也成功晕了...

  • StAR_tan
    2016-09-10 23:17:07

    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()的返回值