您的位置:

php类型转换相关的一个bug(php类型转换的两种方法)

本文目录一览:

php运算, 这是bug? 输出的是 true?

不是bug,是你的用法不严谨。

直接 echo $x1 == $x2 的确为true,原因是双等号是不严格的比较。php在做==比较时,当发现变量的内容是数字时,会尝试把数字转换成整型或浮点型后再比较,由于你给的串太长,导致溢出,参于比较的位数肯定是相等的。

两个解决方案:

1)使用恒等比较 ===,这个比较能正确处理。

2)两个字符串比较严谨的用法是用strcmp($x1,$x3);看比较的结果值。为0才是两个串相等。

php程序员写的代码为什么总有bug

弱类型以及即编即译等等灵活的特性,注定PHP必须要有牺牲一定的稳定性的前提来达到。换句话说,通常JAVA中一些BUG可以通过编译机制可以尽早的扼杀早摇篮之中,即使是运行期的错误,也可以通过编译机制找到。同时,强类型语言的严谨的代码编写风格,也不容易出现由弱类型语言中那些让人又爱又恨的类型自动转换发生的意想不到的行为。

最终,我可以认为PHP为了快速开发,做出了他应有的牺牲。把更多的代码控制权力交给程序员,而不是交给机器,这也意味着代码的有效性考验着作为程序员本身的编程能力。更可能是程序员本身对编程思想的理解程度。不过,PHP大多数都是用来开发web站点,而且还有很庞大的社区,以及许多优秀的框架,这些都可以帮助PHP程序员在开发中减少不必要的麻烦。

BUG不可避免,BUG与否决定在你!

个人经验,少年,你如果要开发应用的话,这个年代不用框架,就等于自己为自己增加N倍的难度。在下推荐几款框架给你吧:

LARAVAL (强力推荐),YII,codeigniter.......

为什么PHP中 echo ("00000"=="000000"); 返回的值为1? 五个0与六个0的字符串居然相等!

对于比较运算符“==”,如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行。

所以,如下字符串中,转换为数值之后相等而输出1。

?php

echo ("0"=="000000");//1

echo ("00000"=="000000");//1

echo ("12345"=="012345"); //1

echo ("10"=="1e1"); //1

?

echo ("12345n"=="012345n");

由于比较的表达式中两边都含有字母,所以均当做字符串来处理而没有进行转换,所以没有输出1。

另外,当其中的涉及到数字内容的字符串要进行转换的时候,其开始的值决定转换后的值,比如:

echo (12345=="012345 我和我的小伙伴们都惊呆了。"); //1

echo (12345=="01234n5"); // 不会输出1

echo ("12345"=="012345 我和小伙伴们都惊呆了n"); // 这样也不会输出1