2010-08-25 65 views
0

我剛問過一個question on SO,發現我可以利用++來遞增字母。現在我已經試過這樣:增量字母:奇怪的問題

$last_id = get_last_id(); 

echo gettype($last_id); //string 

echo 'L_ID ->'.$last_id.'<br />'; //AAF 

$next_id = $last_id++; 

echo 'N_ID ->'.$next_id.'<br />';//AAF 

下面的例子,我被賦予正常工作:

$x = 'AAZ'; 
$x++; 
echo $x;//ABA 

這是怎麼回事?必須在一天的工作結束...

感謝所有的幫助

回答

9

++是一個post increment operator,從而

$next_id = $last_id++; 

分配的$ last_id至$ NEXT_ID的當前值,然後然後遞增。你想要的是一個預增量

$next_id = ++$last_id; 
+0

或者他可以把它分成兩個語句:'$ last_id ++; $ next_id = $ last_id;' – FrustratedWithFormsDesigner 2010-08-25 15:52:10

+1

啊,我不知道,那。每次我就這個問題提出問題時,都會強調我對PHP的瞭解!謝謝保羅。 – Abs 2010-08-25 15:52:18

+1

@Abs:另外,這些操作符存在於許多其他語言中,它們的行爲也是類似的。 – FrustratedWithFormsDesigner 2010-08-25 15:53:22

3

++變量後,當聲明它完成的部分將增加它。您在$next_id之前將$last_id的值指定爲增量。而應使用++$last_id,該值在使用變量值之前遞增。

+0

這是不正確的 - 增量在評估之後發生,而不是在整個語句完成時發生。因此$ x = 1; echo($ x ++)*($ x ++);產生'2' – 2010-08-25 15:51:07

+0

另外,運算符優先級顯示評估的順序:http://www.php.net/manual/en/language.operators.precedence.php – 2010-08-25 15:52:14

+0

我站好了。感謝您的澄清。 – 2010-08-25 15:52:36