记录一下php判断 == 的问题

今天发现 var_dump(1570961310 == ‘1570961310—aaa’); 返回的true
以下是AI的回答

在 PHP 中,当你使用 == 进行比较时,它执行的是类型强制转换(也称为“宽松比较”)和值比较。这意味着如果两边的数据类型不同,PHP 会尝试将它们转换为相同的类型,然后再进行比较。

对于表达式 1570961310 == ‘1570961310—aaa’:

PHP 看到左边是一个整数(int)1570961310。
PHP 看到右边是一个字符串(string)‘1570961310—aaa’。
由于使用了 == 进行比较,PHP 会尝试将字符串转换为整数以与左侧的整数进行比较。
PHP 在尝试将字符串 ‘1570961310—aaa’ 转换为整数时,会只取字符串开头的数字部分(即 ‘1570961310’),并忽略掉后面的非数字字符(即 ‘—aaa’)。
因此,字符串 ‘1570961310—aaa’ 被转换为整数 1570961310。
接着,PHP 比较两个整数 1570961310 是否相等。因为它们确实相等,所以表达式 1570961310 == ‘1570961310—aaa’ 返回 true。
如果你想要执行严格的比较(即不进行类型强制转换),你应该使用 === 运算符。在这个例子中,1570961310 === ‘1570961310—aaa’ 会返回 false,因为两边的数据类型不同(一个是整数,一个是字符串)。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值