0 == "无". 结果是 true

0 == "无". 结果是 true

本作品采用《CC 协议》,转载必须注明作者和本文链接
快乐就是解决一个又一个的问题!
CrazyZard
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 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年前

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