理解为什么php以它现在的方式递增字符

3

PHP手册指出: 在处理字符变量的算术运算时,PHP遵循Perl的约定而不是C的约定。 例如,在PHP和Perl中,$a = 'Z'; $a++;会将$a变成'AA', 而在C中,a = 'Z'; a++;会将a变成'[' ('Z'的ASCII值为90,'['的ASCII值为91)。

如果PHP在处理字符的算术运算时将字符转换为ASCII值(假设),那么它不应该打印出'['而不是'AA'吗?为什么以及如何使PHP增加字符的方式呢?


2
为什么?因为这是他们选择的方式。怎么做?阅读源代码。 - Petah
哦,它基本上是26进制计数。 - Petah
正如所述,它遵循Perl的惯例。这意味着它不会按其ASCII值处理字符。它的工作方式不是某种奇怪习惯的副产品,而是一个有意的选择。 - deceze
1个回答

2
如果PHP在处理字符的算术运算时将字符转换为ASCII值(假设),那么你的假设是错误的,因为它将"0"0视为相等,而不是将"0"48视为相等。
$ php
<?php
echo "0" == 0 ; echo "\n";
echo "0" == 48 ; echo "\n";
1
​

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接