看看下面的代码,猜测下会输出什么:
for ($c = 'a'; $c <= 'z'; $c++) { echo $c . "\n"; }
如果你的回答是输出'a'到'z',那么你会惊奇的发现你的回答是错误的。
不错,上面的代码的确会输出'a'到'z',但除此之外,还会输出'aa'到'yz'。我们来分析下为什么会是这样的结果。
在PHP中不存在char数据类型,只有string类型。明白这点,那么对'z'进行递增操作,结果则为'aa'。对于字符串比较大小,学过C的应该都知道,'aa'是小于'z'的。这也就解释了为何会有上面的输出结果。
如果我们想输出'a'到'z',下面的实现是一种不错的办法:
for ($i = ord('a'); $i <= ord('z'); $i++) { echo chr($i) . "\n"; }
或者这样也是OK的:
$letters = range('a', 'z'); for ($i = 0; $i < count($letters); $i++) { echo $letters[$i] . "\n"; }