PHP 7.4 字符串比较

3

有人能解释一下为什么在下面的第一个例子中比较返回 false 吗?

在第二个例子中,你可以看到只需改变第一个字符即可返回true

我漏掉了什么吗?

(1 != "1f9bb589-434d-46ce-9b0d-fe101619ce6f") -> bool(false)

vs

(1 != "2f9bb589-434d-46ce-9b0d-fe101619ce6f") -> bool(true)

1
【官方文档】在 PHP 8.0.0 之前,如果将字符串与数字或数值字符串进行比较,则在执行比较之前会将字符串转换为数字。这可能导致令人惊讶的结果,可以通过以下示例看到: - Simone Rossaini
1个回答

4
!= 运算符执行带有类型转换的比较。由于第一个操作数是 int 类型,因此比较是按数字执行的,并且将第二个操作数强制转换为 int 类型。这意味着第一个数字序列被取出并转换为 int,其后的所有内容都被丢弃。在第一个示例中,第一个数字序列是 "1",因此您得到 1 != 1,这显然是错误的。在第二个示例中,您同样得到 1 != 2,这显然是正确的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接