为什么php中的++运算符处理对象属性?

时间:2010-02-25 01:14:58

标签: php object

我把这段代码展示给了我的朋友

$user->attempts++; // the attempts property returns an int

他就像是在说这个代码是多么愚蠢,漫无目的地说数字运算符在附加到对象时会产生语法错误;事情是它按照我的预期工作(增加尝试1,哦是的,我测试了它)

所以我问,为什么这到底有效?

3 个答案:

答案 0 :(得分:18)

因为你的朋友错了

答案 1 :(得分:4)

它有效,因为它是有道理的。 $user->attempts是一个整数。忘记它附着在一个物体上;这是一个整数。如果++ 没有工作,我会感到惊讶。

但是,我经常发现PHP语法不能像我预期的那样工作,而且它在将来的版本中已得到修复。这是人们通常希望它工作的那种事情,但鉴于个人使用PHP的经验,可能会降低一个人的期望。也许这就是你朋友的感受。

答案 2 :(得分:2)

因为它是$ user指向的类中的变量。

class User {
    public $attempts = 0;
}

$user = new User;
$user->attempts++; // works.

对于数组来说,它与变量的位置无关:

$foo = array('bar' => array('baz' => 0));
$foo['bar']['baz']++; // works.