为了账号安全,请及时绑定邮箱和手机立即绑定

大神点进来瞧瞧!

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

正在回答

3 回答

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

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


1 回复 有任何疑惑可以回复我~
#1

lingyunkeyan

一语道破天惊
2017-07-13 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

a10282465693872396 提问者

兄弟,不客气,哈哈
2016-09-11 回复 有任何疑惑可以回复我~

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

1 回复 有任何疑惑可以回复我~
#1

a10282465693872396 提问者

$car->speedUp();的意思是访问类里面的方法?还是说是执行了类里面的方法?
2016-09-10 回复 有任何疑惑可以回复我~
#2

StAR_tan 回复 a10282465693872396 提问者

你说的访问和执行有什么区别? 纠正一点,$car->speedUp()是执行实例里的方法,而不是类里的方法。这是有很大区别的,多看看面向对象相关的文章和书籍吧。 class 人{ function 说话(){ 你好 } } $小明 = new 人(); //小明是实例,人是类 $小明->说话(); //小明才能说话的能力,人只是定义了这种能力
2016-09-11 回复 有任何疑惑可以回复我~
#3

a10282465693872396 提问者 回复 StAR_tan

那如果定义的方法里面用的return,后面直接输出$car->speedUp();没有加echo。结果是什么都没有,那是什么意思,现在还有点晕,返回值是赋予了speedup();这个函数了是吧,然后我再执行这个函数不就是应该有结果的吗?
2016-09-11 回复 有任何疑惑可以回复我~
#4

枫中看雨 回复 a10282465693872396 提问者

大概是因为你没有输出语句,把return $this->speed+=10;换成echo $this->speed+=10;就能直接调用并且会显示结果。return $this->speed+=10;的话调用时要echo $car->speedUp();
2016-09-11 回复 有任何疑惑可以回复我~
#5

枫中看雨 回复 枫中看雨

直接调用方法会显示结果是因为方法里面有输出语句,额,大概
2016-09-11 回复 有任何疑惑可以回复我~
#6

a10282465693872396 提问者 回复 枫中看雨

大概模模糊糊的能懂,如果完全解释一边的话就搞不清楚了只能这么记了
2016-09-11 回复 有任何疑惑可以回复我~
#7

StAR_tan 回复 a10282465693872396 提问者

变量是在内存里的(不会无缘无故显示在屏幕上),你可理解为echo是将变量显示到屏幕的命令,没有这个命令你的一切计算都是在内存里,回去看前面的课从C开始学基础,完全没有编程概念很难解释。
2016-10-21 回复 有任何疑惑可以回复我~
#8

lingyunkeyan 回复 StAR_tan

这个例子我终于明白了对象和实例和类;;感谢
2017-07-13 回复 有任何疑惑可以回复我~
查看5条回复

举报

0/150
提交
取消

大神点进来瞧瞧!

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信