首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

弄清楚为什么这个简单的比较在PHP中显示不相等

在 PHP 中,比较两个值时,如果它们的类型不同,则它们被认为是不相等的。在这个例子中,我们需要确保两个值的类型相同,才能得到正确的比较结果。

例如,如果我们有以下代码:

代码语言:php
复制
$a = 1;
$b = '1';

if ($a == $b) {
    echo "相等";
} else {
    echo "不相等";
}

在这个例子中,$a 是一个整数,而 $b 是一个字符串。因此,即使它们的值相同,但它们的类型不同,所以它们被认为是不相等的。

为了解决这个问题,我们可以将它们转换为相同的类型,然后再进行比较。例如,我们可以将它们都转换为整数或字符串,然后再进行比较:

代码语言:php
复制
$a = 1;
$b = '1';

if ((int)$a == (int)$b) {
    echo "相等";
} else {
    echo "不相等";
}

在这个例子中,我们将 $a 和 $b 都转换为整数,然后进行比较。因为它们的值和类型都相同,所以它们被认为是相等的。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么Android请求权限从来都不是一件简单事情?

等待时间一时兴起,突然想写一篇原创,聊一聊我自己写Android权限请求代码时一些技术心得。 正如这篇文章标题所描述一样,Android请求权限从来都不是一件简单事情。为什么?...这个就仁者见仁智者见智了,有些朋友可能觉得这也没多少行代码呀,有什么麻烦。但我个人认为还是比较麻烦,每次需要请求运行时权限时,我都会觉得很心累,不想写这么啰嗦代码。...到现在为止,我们才算是把一个“简单权限请求流程用比较完善方式处理完毕。然而代码写到这里真的还算是简单吗?每次申请运行时权限,都要写这么长长一段代码,你真的受得了吗?...这也就是我编写PermissionX这个开源库原因,Android请求权限从来都不是一件简单事情,但它不应该如此复杂。...我们只需要在permissions()方法传入要请求权限名,onExplainRequestReason()和onForwardToSettings()回调填写对话框上提示信息,然后request

1.3K10
  • 你所了解array_diff_uassoc 真的是你了解那样吗?

    如果让你用一句话描述 PHP 函数 array_diff_uassoc,也许你开口就来了,就是同事比较两个或多个函数,并返回第一个函数出现且没有在其他函数出现键值同时相同数据。...其实,说实话,一开始我也是这么认为。直到我自定义函数中分别输出 a,b,看到那奇葩输出内容才觉得,那个比较函数没那么简单。 为了方便看出内容,使用下面的数组替代问题中数组内容 ?...所以,自定义函数返回结果会影响到临时变量 lists 输出。 php 内部首先对所有的输入数组进行进行排序。所以自定义函数可以看出前面的输出内容都是先把数组键名依次进行比较。...但是,如果你自定义函数返回值是 “有悖常理”,比如这个问题中函数,永远都是相等,但是 php 同一个数组键值不可能相同,所以这个自定义函数比较结果其实是 "有问题"。...在这个前提下,那么 php 返回结果也有可能会有意外输出。

    64750

    PHPFloat类型

    PHPFloat类型指的是浮点数,浮点数运算是计算机世界不可或缺一部分。本文将从多个方面对PHPFloat类型进行详细阐述,旨在帮助读者更全面地理解和使用Float类型。...由于计算机内部对于浮点数表示方式,有些十进制小数无法准确表示。因此,我们需要借助函数来控制精度。 2、进行比较浮点数大小时为什么要使用“精度比较”?...由于计算机内部对于浮点数表示方式,有些十进制小数无法准确表示。因此,比较浮点数大小时,我们需要使用精度比较。   ...';   } 四、Float类型应用场景 1、计算几何平面运算 2、货币计算 3、数据分析统计、数据可视化,例如在柱状图等图表显示浮点型数据。...五、总结 本文对PHPFloat类型进行了详细阐述。

    41030

    王帅:深入PHP内核

    PHP是一门简单而强大语言,提供了很多Web适用语言特性,其中就包括了变量弱类型,弱类型机制下,你能够给一个变量赋任意类型值。...PHP不会严格检验变量类型,变量可以不显示声明其类型,而在运行期间直接赋值。...不过对于PHP一些高级变量Array/Object/Resource,变量转换要进行更多操作。 变量转换原理分为3种: 5.1 标准类型相互转换 比较简单,按照上述步骤转化即可。...> $var变量名会存储变量符号表,代表$var类型和值zval结构存储哈希表。内核通过变量符号表与zval地址哈希映射,来实现PHP变量存取。 为什么要提作用域呢?...> 创建函数外变量$temp,会把这个它加入全局符号表,同时全局符号表HashTable,分配一个字符类型zval,值为‘global‘。

    70210

    PHP编程」PHP这些坑,PHP开发常见填坑备注

    日常开发,我们经常碰到这样问题,即有些PHP问题看似简单,一说就明,但是一到使用时就踩坑。...比如,下面我所列几条: 1、由于使用单引号,以“ ”为分割符,使用PHP函数explode分割字符串,不能正常分割。 原因:这个涉及到单引号与双引号区别,单引号反斜杠不能被解析。...如果文件保 存时,选择了使用 BOM,会使页面显示不正常。一般来说,php是不支持有BOMphp文件应该保存为UTF-8无BOM类型,所以保存 UTF8 编码PHP文件时,不要使用 BOM。...8、字符串是否相同建议用 === 而非 == 为什么呢?因为这个比较是弱类型。两个比较时,PHP会先尝试判别左右两者是否为数字。而问题就在于什么样字符串是数字,是单纯数字串吗?...另外吐槽一下JAVA,==居然比较不了字符串是否相等,因为字符串是一个对象,==变成了判断是否为同一个对象…… 9、不能把switchcase当作if来使用 PHP函数switch……case

    1.2K20

    【问底】王帅:深入PHP内核(一)——弱类型变量原理探究

    PHP是一门简单而强大语言,提供了很多Web适用语言特性,其中就包括了变量弱类型,弱类型机制下,你能够给一个变量赋任意类型值。...PHP不会严格检验变量类型,变量可以不显示声明其类型,而在运行期间直接赋值。...> 如果你对弱类型原理理解不深刻,变量比较时候,会出现“超出预期”惊喜。 [php] view plaincopy 1.<?...不过对于PHP一些高级变量Array/Object/Resource,变量转换要进行更多操作。 变量转换原理分为3种: 5.1 标准类型相互转换 比较简单,按照上述步骤转化即可。...> 创建函数外变量$temp,会把这个它加入全局符号表,同时全局符号表HashTable,分配一个字符类型zval,值为‘global‘。

    1.5K50

    GO 比较两个对象是否相同

    PHP === 可以直接去比较数据值和数据类型,称为全等比较运算符 那么,看到此处,是否可以猜测 golang 做法也是类似的呢?...实际上 golang 去比较两个对象是否相同,也是通过去比较数据类型,数据值,数据长度等等维度来进行确认 C++ 是需要我们自己编码实现,PHP 是直接提供 === ,Golang 是给我们反射包中提供一个...为什么需要递归调用呢?...这个很明显,例如对于一个切片来说,如果里面的元素是简单字符串,或者整型数字,那么第一层使用 deepValueEqual 去识别和处理切片类型比较,读取到切片元素时候就可以直接走 == 来确认是否相等...比较过程,哪怕有一个环节不是我们所期望,那么都会直接返回 false,即不相等 那么,仔细看 DeepEqual 注释,我们可以看到,这里有详细关于各种数据类型比较和校验细节,翻译一下仅供大家参考

    24530

    面试题系列第3篇:Integer等号判断内幕,你可能不知道?

    你是否疑惑为什么i1等于i2,i1等于i3,i2等于i4,都为true,那么根据等号传递性,i3应该等于i4啊? 为什么i1和i3相等,但i5和i6却不相等呢? 先保留疑问。...变量JVM存储 彻底弄清楚上问题之前,我们先来了解一下基础类型变量、引用类型变量JVM存储。 通常变量分为局部变量和全局(成员)变量。...因为已经有3这个值,便将b直接指向3。 此时,a与b同时指向3这个值,自然是相等。...因为通过new和valueOf创建是完全两个对象,那么针对题目中C项,直接比较两个对象引用肯定是不相等,因此结果为false。但B项为什么为true呢?后面我们会讲到。...Integer缓存 为什么i1和i3相等,但i5和i6却不相等呢?对应题目中B和G项。这里就涉及到Integer缓存机制。

    62830

    PHP反序列化

    数值相等 可以进行数据类型转换(比较前进行转换),如果类型转换后$a和$b相等,则为true === 全等 不进行数据类型转换(不在比较前进行转换),如果$a等于$b,并且数据类型也相同...==不相等,可以进行数据类型转化 这道题因为我们可以控制实例化类,因为要求username和password不相等,所以我们可以实例化类时候将类username和password值进行更改...{ //一些其它初始化操作 } __destruct()函数,使用file_put_contents将password写入username,所以这个地方要求username...web262 PHP反序列化特点 PHP进行反序列化时,底层代码是以**;作为字段分隔,以}**作为结尾(字符串除外),并且是根据长度判断内容,同时反序列化过程必须严格按照序列化规则才能成功实现反序列化...,但是序列化后字符串显示还是7,因为这种字符减少字符逃逸会向后吞噬第一个 **"** 直到 **;** 结束,所以这种问题就不再是只传一个值,而是应该**username处传递构造过滤字符

    18710

    简单php trim函数并不简单

    字符串处理在任何程序应该是最最常见了吧。php trim函数就是用来去除字符串字符串。最常用就是去除空格了。但是,这个简单函数,是否真的像你认为那样简单呢?...trim函数定义如下: ? trim是两边去除,还有ltrim 从左边去除,rtrim从右边去除,php源码,最终都是通过一个函数处理。...所以一下关于trim是对php 内部统一trim而言。 源码ext/standard/string.cphp_trim函数。...来看php_charmask这个函数 ? 中间省略部分可以不看,只是对非法数据一个错误返回。 只要看第一个if内容。如果字符串假设传入内容what='a..f'。...,多字节处理时候就会出现问题了,这也就是为什么trim对于中文会产生乱码。

    1.6K30

    这还是我认识Python吗!

    进行比对之前,让我们先来看看为什么要用 Python ?...3、学习 这通常是学生想要弄清楚第一个问题,学习过程越容易,他们能越快开始工作和赚钱。 当然,这个类别的获胜者是 Python,它语法更简单易学。...从新手角度来看,你如果想要选择更简单、更灵活,那么Python是最理想,Python 允许你创建安全应用程序,而 PHP 要达到这个目的则需要额外工具,PHP 是专门为 Web 开发而创建,在这方面应用得更多...如果你没有技术类背景,学 Java 是个很艰难过程;另一面,Java 能使用在不同环境,如果这个特点是你需要,那就用 Java吧。...Python vs C# Python C# 简单性 是 否 脚本编写 任何环境 只IDE 库 很多个库 很少有库 性能 低 高 关于 Python 或 C# 哪种语言更好这个问题,没有正确答案

    68630

    你真的了解php吗?

    性状 在学习laravel框架之前都没弄清楚性状(trait)。这是PHP5.4.0引入新概念,既像类又像接口。但它两个都不是。 性状是类部分实现,可以混入一个或多个现有PHP。...第三反应创建实现GPS功能性状(trait),然后Car和Phone类混入这个性状。能实现功能,不影响继承结构,不重复实现,完美。 创建与使用性状 创建trait <?...生成器会根据需要计算并产生要迭代值。如果不查询,生成器永远不知道下一个要迭代值是什么,在生成器无法后退或快进。具体看如下两个例子: 简单生成器 <?...不过,PHP将其视作相同概念。 简单闭包 <?...处理每个HTTP请求前,会先经过这个路由器脚本,如果结果为false,返回当前HTTP请求引用静态资源URI。

    2K50

    md5加密介绍以及phpmd5漏洞

    phpmd5函数漏洞 PHP,我们也常将md5哈希字符串进行对比,然而却没有在意处理细节,导致漏洞出现。 我们在运行以下php脚本 <?...php $str = md5('QNKCDZO'); var_dump($str == '0'); 打印出来结果是:bool(true) 是不是与我们预想情况不一样,这明显是两个不一样字符串,为什么会得到相等结果...但是输入时候要把+号省略,并且显示E是小写e PHP 以下几种写法结果相同 <?...那么我们一开始遇到问题时候==比较运算符号php也会根据场景将值转换为对应格式来比较 如果比较数据,有布尔值,则转为布尔值比较,布尔值比较有一个规则:true> false 如果比较数据...php,使用比较运算符时候需要考虑数据类型问题,防止特殊数据影响了判断结果。 提示 关于MD5PHP使用注意事项 将会有一篇新文章罗列讲解,有兴趣可以博客内搜索看一下。

    1.9K10

    md5加密介绍以及phpmd5漏洞

    phpmd5函数漏洞 PHP,我们也常将md5哈希字符串进行对比,然而却没有在意处理细节,导致漏洞出现。 我们在运行以下php脚本 <?...php $str = md5('QNKCDZO'); var_dump($str == '0'); 打印出来结果是:bool(true) 是不是与我们预想情况不一样,这明显是两个不一样字符串,为什么会得到相等结果...但是输入时候要把+号省略,并且显示E是小写e PHP 以下几种写法结果相同 <?...那么我们一开始遇到问题时候==比较运算符号php也会根据场景将值转换为对应格式来比较 如果比较数据,有布尔值,则转为布尔值比较,布尔值比较有一个规则:true> false 如果比较数据...php,使用比较运算符时候需要考虑数据类型问题,防止特殊数据影响了判断结果。

    3.2K20

    Python 浮点数冷知识

    接着看第二个: >>> hash(float('nan')) == hash(float('nan')) True 前面刚说了两个“不是数东西”不相等,这里却显示它们哈希结果相等,这挺违背常理。...我们可以推理出一条简单结论:不相等两个对象,其哈希结果可能相等。 原因在于,hash(float('nan')) 结果等于 0,它是个固定值,作比较时当然就相等了。...它正是圆周率前五位 3.14159,去除小数点后结果。早期 Python 版本,负无穷大数哈希结果其实是 -271828,正是取自于自然对数 e。...这两个数都是硬编码 Python 解释器,算是某种致敬吧。...,两个对象作比较不相等,但是其哈希结果是固定值,作比较时相等;可用作字典键值,而且是不冲突键值 float('inf') 表示无穷大浮点数,可看作确定值,两个对象做比较时相等,其哈希结果也相等

    71220

    实战遇到sql小姿势

    今天就选取出一些之前所做笔记里个人认为比较有趣,关于 SQL 注入/ SQL 方面的小东西,以及它们带给我思考,简单来说就是笔者一些点滴成长过程。这些东西也并不怎么高深,比较适合入门看看。...另外就是由于可能比较敏感,所以就尽量不放图了。 逻辑推理注入 访问网站,看到是一个登录界面,在用户名处随意输入 .'", ,页面就返回 500,显示是下面这个鬼东西。 ?... sqlmap 源码 XML 文档也有说明。...这里主要有两个要点需要弄清楚: 1)这个 web 应用在这个地方为什么会处理 POST 里面的数据? 2)为什么 POST 数据可以以文件上传 multipart/form-data 形式提交?...这样一来,就不必区分客户端请求是 GET 还是 POST 了,省事多了;而 PHP 也有类似的情况,比如 $_REQUEST;而 .NET 应该也有类似的操作,后来笔者 PHP、.NET 中都有遇到过这样情况

    95400
    领券