php字符递增问题

php字符递增问题

最近在做项目的时候碰到了这个问题,从A输出到Z。原本以为可以这样写:

for($i = 'A'; $i <= 'Z'; ++$i) {
    echo $i;
}

结果输出是:

ABCDEFGHIJKLMNOPQRSTUVWXYZAAABACADAEAFAGAHAIAJAKAL...

想了好久不明白是为什么,最后不得不考虑用他们的ascii码值:

for ($i = ord('A'); $i <= ord('Z'); ++$i)
{
    echo chr($i);
}

这样就可以正确执行了。百思不得其解,难道for循环中中$i<=Z条件错误,以致于循环不能结束?遂进行如下测试:

输出竟然是'AA'。。。这确实让人意外,最后在laruence的博客中找到了解释,原来当$i = Z时,条件仍然成立,当Z+1时,结果为AA,仍然小于Z,最后一直到YZ,ZA才大于Z,才停止循环。在laruence的文章评论中,有一位@胖子总结了一句话,觉得确实挺有道理:

其实说明了另一个问题:PHP中没有字符,即使用chr,返回的也是一个长度为1的字符串
如:
var_dump(chr(90));
得到:
string ‘Z’ (length=1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值