问答详情
源自:2-6 PHP类和对象之Static静态关键字

请问【return self:: $speedUp = $speedUp + 10; return self::$speed+=10;】这两个表达方式有什么区别呀?为什么结果不同?

<?php
class Car {
    private static $speed = 10;
    
    public function getSpeed() {
        return self::$speed;
    }
    
    //在这里定义一个静态方法,实现速度累加10
    public static function speedUp() {
        //return self:: $speedUp = $speedUp + 10;
        return self::$speed+=10;
    }




}

$car = new Car();
Car::speedUp();  //调用静态方法加速
echo $car->getSpeed();  //调用共有方法输出当前的速度值


提问者:三瓣核桃 2016-05-05 08:37

个回答

  • 张旖旎
    2016-05-05 09:16:05
    已采纳

    $speedUp = $speedUp + 10

    $speed+=10这两个表达式就,粗略的看$speedUp + 和$speedUp=$speedUp+10 是一个意思 但区别在于 $speedUp+ 是先使用$speedUp的值 然后再使$speedUp+10 而$speedUp =$speedUp+10 只是简单的给 $speedUp 加10,,所以return返回的值不同


  • sucfail
    2016-07-21 21:19:07

    第一,楼主应该是写错了,想要表达的意思是问return self:$speed+=10和return self:$speed=self:$speed + 10的区别。否则$speedUp是什么鬼?即不是变量名,也不是函数名。

    第二,上面两个书写正确的表达式得出的结果是一致的,表达的也是一个意思,你得出不同的结果,完全是因为你写错了。

    结论,楼主书写错误

  • 妹妹大胆往前走
    2016-06-22 00:11:39

    好像重点不应该是这个吧。self:: $speed= $speed + 10;你这样写肯定会报错的,因为在function speedUp()中你没有定义$speed,他同函数外$speed 是两个不同的变量;只有通过self::$speed,才能将该函数外面的speed引入到函数内来