首页 » Web前端 » php从a到z技巧_3分钟短文 PHP 打印a到z给你5秒钟思虑看看你入了哪个坑

php从a到z技巧_3分钟短文 PHP 打印a到z给你5秒钟思虑看看你入了哪个坑

访客 2024-11-03 0

扫一扫用手机浏览

文章目录 [+]

我想你肯定不会手动写去世的是么?26个字母,毕竟也不多,很多同学都是手动敲上去的。

我们说一说随意马虎犯的一些小缺点,以加深循环对字符操作的印象。

php从a到z技巧_3分钟短文  PHP 打印a到z给你5秒钟思虑看看你入了哪个坑

学习韶光

先说一个同学在写循环打印 a-z 字母序列的时候,碰着的坑。
他的代码是这么写的:

php从a到z技巧_3分钟短文  PHP 打印a到z给你5秒钟思虑看看你入了哪个坑
(图片来自网络侵删)

for ($i = 'a'; $i <= 'z'; $i++) echo "$i\n";

想着也比较大略,不至于出什么幺蛾子。
可是,缺点还是一如既往地涌现了。
打印的内容是这么一堆乱七八糟:

是不是完备不是我们要的样子。
眼尖的同学立马意识到,for 循环的结束条件出问题了。
没有在打印到字母 z 的时候即时终止。

到底为什么呢?文档里说的很清楚:

在处理字符变量的算数运算时,PHP 沿袭了 Perl 的习气,而非 C 的。

在 Perl 中$a = 'Z'; $a++;将把$a变成'AA',而在 C 中,a = 'Z'; a++;将把a变成'['('Z'的 ASCII 值是 90,'['的 ASCII 值是 91)。

把稳字符变量只能递增,不能递减,并且只支持纯字母(a-z 和 A-Z)。
递增/递减其他字符变量则无效,原字符串没有变革。

这是 PHP 独特的字符串递增所产生的。
我们实际测试一下:

var_dump('aa' <= 'z'); // truevar_dump('yz' <= 'z'); // truevar_dump('za' <= 'z'); // false

以是上述的代码一贯运行下去,字符串比较适中成功。
为了精确地实行,代码须要改动一下:

for ($i = 'a'; $i != 'aa'; $i++) echo "$i\n";

在输出到字符串 'aa' 的时候立马跳出循环。
这是基于上述精确理解后作出的改动。

精良的办理方案

上述方法中利用 $i !== 'aa' 进行的操作实属无奈之举。
当然是有更好的办法的,便是 PHP 内置的 range 函数,它可以天生一个序列值,容错性非常好:

foreach (range('a', 'z') as $i) echo "$i\n";

如果非要手动遍历,那就一定避免字符递加,而是利用整数递加,就能杜绝程序跑偏。
比如利用 ord 函数,作为 ASCII 字符的边界值:

for ($i = ord('a'); $i <= ord('z'); $i++) echo chr($i);写在末了

Bug 虽小,却映射出编程措辞深层的事理,这样的知识,我甘心来一打。

Happy coding :_)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

标签:

相关文章

房山第一探寻历史文化名区的魅力与发展

房山区,位于北京市西南部,历史悠久,文化底蕴深厚。作为北京市的一个重要组成部分,房山区的发展始终与首都的发展紧密相连。房山区积极推...

Web前端 2025-02-18 阅读1 评论0

手机话费开钻代码数字时代的便捷生活

我们的生活越来越离不开手机。手机话费作为手机使用过程中的重要组成部分,其充值方式也在不断创新。手机话费开钻代码应运而生,为用户提供...

Web前端 2025-02-18 阅读1 评论0

探寻专业奥秘如何查询自己专业的代码

计算机科学已成为当今社会不可或缺的一部分。掌握一门专业代码对于个人发展具有重要意义。面对繁杂的学科体系,如何查询自己专业的代码成为...

Web前端 2025-02-18 阅读0 评论0