0 == "无". 结果是 true

0 == "无". 结果是 true

本作品采用《CC 协议》,转载必须注明作者和本文链接
快乐就是解决一个又一个的问题!
CrazyZard
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 13

php? 0 == '有' 也是 true

3年前 评论
playmaker

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

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

3年前 评论

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

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

(int) "无" 就是 0

3年前 评论
九霄道长

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

3年前 评论
游离不2

PHP8 之后就改了

3年前 评论

建议升级 php

3年前 评论

用这个strcasecmp()

3年前 评论
CrazyZard

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

3年前 评论
Junwind 3年前

file 惊不惊喜 意不意外

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

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