++ 的奇怪行为PHP 5.3 中的运算符
观看以下代码:
$a = 'Test';
echo ++$a;
这将输出:
Tesu
问题是,为什么?
我知道“u”在“t”之后,但为什么它不打印“1”???
PHP 文档:
此外,变量正在递增 或递减将转换为 适当的数值数据 类型——因此,下面的代码将 返回 1,因为字符串 Test 是 首先转换为整数 0,然后递增。
Watch following code:
$a = 'Test';
echo ++$a;
This will output:
Tesu
Question is, why ?
I know "u" is after "t", but why it doesn't print "1" ???
PHP Documentation:
Also, the variable being incremented
or decremented will be converted to
the appropriate numeric data
type—thus, the following code will
return 1, because the string Test is
first converted to the integer number
0, and then incremented.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
来源:http://php.net/operators.increment
Source: http://php.net/operators.increment
在 PHP 中,您可以递增字符串(但不能使用加法运算符“增加”字符串,因为加法运算符会导致字符串转换为
int
,因此您只能使用递增运算符来“增加”字符串!...参见最后一个示例):因此
"a" + 1
是"b"
在"z"
出现之后 <代码>“aa”等等。因此,在
"Test"
之后是"Tesu"
在使用 PHP 的自动类型强制时,您必须注意上述内容。
自动类型强制:
没有自动类型强制! (增加一个字符串):
如果你想处理字母的 ASCII 序数,你必须做一些额外的工作。
如果您想将字母转换为 ASCII 序数,请使用 ord(),但这一次仅适用于一个字母。
实时示例
上面利用了字符串只能是在 PHP 中增加。不能使用加法运算符来增加它们。在字符串上使用加法运算符将导致其转换为
int
,因此:字符串不能使用加法运算符“增加”:
上面将尝试转换“
Test” 到
(int)
,然后添加1
。将“Test
”转换为(int)
结果为0
。注意:您不能递减字符串:
前面的意思是
echo --$a;
实际上会打印Test
而不改变字符串。In PHP you can increment strings (but you cannot "increase" strings using the addition operator, since the addition operator will cause a string to be cast to an
int
, you can only use the increment operator to "increase" strings!... see the last example):So
"a" + 1
is"b"
after"z"
comes"aa"
and so on.So after
"Test"
comes"Tesu"
You have to watch out for the above when making use of PHP's automatic type coercion.
Automatic type coercion:
No automatic type coercion! (incrementing a string):
You have to do some extra work if you want to deal with the ASCII ordinals of letters.
If you want to convert letters to their ASCII ordinals use ord(), but this will only work on one letter at a time.
live example
The above makes use of the fact that strings can only be incremented in PHP. They cannot be increased using the addition operator. Using an addition operator on a string will cause it to be cast to an
int
, so:Strings cannot be "increased" using the addition operator:
The above will try to cast "
Test
" to an(int)
before adding1
. Casting "Test
" to an(int)
results in0
.Note: You cannot decrement strings:
The previous means that
echo --$a;
will actually printTest
without changing the string at all.PHP 中的增量运算符在内部针对字符串的序数值起作用。在递增之前,字符串不会转换为整数。
The increment operator in PHP works against strings' ordinal values internally. The strings aren't cast to integers before incrementing.