2010-02-25 17 views
2

我發現這個代碼給我的朋友爲什麼php中的++運算符在對象屬性上工作?

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

而且他好像說是多麼愚蠢的代碼是,散漫是附着在物體上時,數字運營商將產生語法錯誤;事情是這樣的,因爲我期望它(增加嘗試1,哦是的,我測試了它)

所以我問,爲什麼地獄是這樣工作?

+5

除了你的代碼缺少分號,我建議你永遠不會從你的朋友編程建議。 – OIS 2010-02-25 02:17:46

+0

缺失的分號只是一個錯字,對此感到抱歉 – yretuta 2010-02-25 06:36:28

+0

切線時,如果他提示'++ $ user-> attempt;'那麼他可能已經指出使用[pre-increment而不是post-increment] (http://stackoverflow.com/questions/24901/is-there-a-performance-difference-between-i-and-i-in-c)。 – 2013-03-14 15:11:36

回答

4

它的工作原理是有道理的。 $user->attempts是一個整數。忘記它附着在一個物體上;它是一個整數。如果++沒有工作,我會感到驚訝。

但是,我經常發現PHP語法不能像我期望的那樣工作,並且它在未來版本中得到修復。這就是人們通常希望它能夠工作的事情,但鑑於個人使用PHP的經驗,可能會降低人們的預期。也許這就是你的朋友所感受到的。

+1

Downvote for unsecesary php抨擊和不正確。 – 2010-02-25 01:18:23

+0

哦,我經常使用PHP。我現在正在使用它,這是我開始的地方。我剛剛親自經歷了比我想象的更多的破碎的語法。 – Matchu 2010-02-25 01:19:36

+0

我明白,有時PHP語法有點模糊,因爲它可以看起來像另一種語言的東西,但行爲有點不同,但是......後綴?我認爲任何未來的版本都不會改變'++'操作符的工作方式。 PHP社區並不是那麼笨拙。 – 2010-02-25 01:22:14

18

因爲你的朋友是錯誤的

+1

明顯是顯而易見的。 – poke 2010-02-25 01:22:12

2

,因爲它是$ USER指向類中的變量。

class User { 
    public $attempts = 0; 
} 

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

這是一個與陣列同樣的事情,沒關係,其中變量是:

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