0 == "无". 结果是 true

0 == "无". 结果是 true

本作品采用《CC 协议》,转载必须注明作者和本文链接
快乐就是解决一个又一个的问题!
CrazyZard
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 13

php? 0 == '有' 也是 true

4年前 评论
playmaker

应该是在使用==的情况下,先转化为相同的类型了,都转为了布尔型的false,然后比较结果返回true了。

使用===全等,那个就会考虑类型的不相同而直接返回false
你可以试试 验证一下 :dog:

4年前 评论

字符类型转强制转换为整型,‘无’ 转换成了 0,没毛病

>>> $a = '无'
=> "无"
>>> (int)$a
=> 0
>>> 0 == $a
=> true
>>> 0 === $a
=> false
>>> $a
=> "无"
>>> $b = '有有有啊'
=> "有有有啊"
>>> (int)$b
=> 0
4年前 评论
蔺焕然

(int) "无" 就是 0

4年前 评论
九霄道长

-1 和其它非零值(不论正负)一样,被认为是 true!

<?php
// 0可以通过任何参数,包括自身
var_dump(0 == 1); // false
var_dump(0 == (bool)'all'); // false
var_dump(0 == 'all'); // TRUE, take care
var_dump(0 === 'all'); // false

// 为了避免这种行为,您需要像这样将参数强制转换为字符串
var_dump((string)0 == 'all'); // false
?>

www.php.net/manual/zh/language.typ...

4年前 评论
游离不2

PHP8 之后就改了

4年前 评论

建议升级 php

4年前 评论

用这个strcasecmp()

4年前 评论
CrazyZard

感谢各位 phper 的热情发言 我只是在吐槽 不同类型下 做比较的这个写法

4年前 评论
Junwind 4年前

file 惊不惊喜 意不意外

4年前 评论
CrazyZard (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!