php参考问题

时间:2011-01-17 13:42:10

标签: php

<?php
    $a = array("ABC","DEF");
    foreach($a as &$b){
        $b++; 
        echo $b . "<br />";
    }
?>

任何机构都可以解释为什么上面的代码片段会生成以下输出吗?

输出:

ABD
DEG

提前致谢

2 个答案:

答案 0 :(得分:1)

如果对字符串使用++,则“计数”:使用字母表中的下一个字符。删除$b++;,输出将为“ABC DEF”

Good explanations here

提示: 如果您致电$a[0][1],则会返回“B”。

答案 1 :(得分:1)

php manual

中对此进行了解释
  

PHP在处理字符变量而不是C的算术运算时遵循Perl的约定。例如,在Perl'Z'+ 1变成'AA',而在C'Z'+ 1变成'['(ord('Z')== 90,ord('[')== 91) 。请注意,字符变量可以递增但不递减,即使只支持纯ASCII字符(a-z和A-Z)。

如果你的意思是为什么$ b已经改变了:

你在foreach循环中传递对$ b的引用,所以在引用$ b而不是$ b代表的值时完成赋值,增加等。