0 == "无". 结果是 true

0 == "无". 结果是 true

本作品采用《CC 协议》,转载必须注明作者和本文链接
快乐就是解决一个又一个的问题!
CrazyZard
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 13

php? 0 == '有' 也是 true

2年前 评论
playmaker

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

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

2年前 评论

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

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

(int) "无" 就是 0

2年前 评论
九霄道长

-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...

2年前 评论
游离不2

PHP8 之后就改了

2年前 评论

建议升级 php

2年前 评论

用这个strcasecmp()

2年前 评论
CrazyZard

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

2年前 评论
Junwind 2年前

file 惊不惊喜 意不意外

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

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