【问题标题】:Incrementing chars in for loop works, decrementing does not?在 for 循环中增加字符,减少不是?
【发布时间】:2016-02-18 02:32:15
【问题描述】:

所以我在做一些练习并遇到了这段代码(产生“1. Item A”、“2. Item B”等):

echo "\n<ol>";
for ($x='A'; $x<'G'; $x++){
    echo "<li>Item $x</li>\n";
}
echo "\n</ol>";

很好奇,我试图做相反的事情(这会产生 Zs 的无限循环):

echo "\n<ol>";
for ($x = 'Z'; $x > 'M'; $x--){
    echo "<li>Item $x</li>\n";
}
echo "\n</ol>";

我在这里错过了什么?

【问题讨论】:

  • 无论出于何种原因,-- 不适用于字符串字符。并且增加一个字符在技术上应该被认为是一个错误。考虑到$x++$x = $x + 1; 相同,所以在你做$x = 'A' + 1;$x = 'Z' - 1 时,当字符转换为整数时,这两者都应该评估为0

标签: php loops for-loop increment chars


【解决方案1】:

PHP 在处理算术运算时遵循 Perl 的约定 关于字符变量而不是 C 的。例如,在 PHP 和 Perl 中 $a = 'Z'; $a++;将 $a 变成 'AA',而在 C 中 a = 'Z';一个++;变成 '['('Z' 的 ASCII 值为 90,'[' 的 ASCII 值为 91)。注意 字符变量可以递增但不能递减,即使如此 只有纯 ASCII 字母和数字(a-z、A-Z 和 0-9)是 支持的。增加/减少其他字符变量没有 效果,原字符串不变。

来自 PHP 手册link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-10
    • 1970-01-01
    • 2022-12-04
    • 2011-05-16
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    相关资源
    最近更新 更多