2010-08-25 35 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