PHP类型杂耍澄清

PHP类型杂耍澄清,php,Php,有人能解释为什么这是真的吗 我尝试删除任何一个字符,它返回false,但这段代码返回true,我不明白为什么 var_dump('608E-4234'='272E-3063')PHP说: 如果两个操作数都是数字字符串,或者一个操作数是数字,另一个操作数是数字字符串,则比较以数字形式进行 在本例中,您尝试比较两个浮动: var_dump((float) '608E-4234'); // double(0) var_dump((float) '272E-3063'); // double(0) 这

有人能解释为什么这是真的吗

我尝试删除任何一个字符,它返回false,但这段代码返回true,我不明白为什么

var_dump('608E-4234'='272E-3063')

PHP说:

如果两个操作数都是数字字符串,或者一个操作数是数字,另一个操作数是数字字符串,则比较以数字形式进行

在本例中,您尝试比较两个浮动:

var_dump((float) '608E-4234'); // double(0)
var_dump((float) '272E-3063'); // double(0)
这些浮点数相等的原因是它们的值超出了精度设置。尝试比较
272E-306

var_dump((float) '272E-306'); // double(2.72E-304)

您将看到另一个结果。

字符串不相等。相等
==
正在比较它们。所以当你说它们是“真的”时,你是什么意思?好的,我试过你的代码。它确实返回
true
。有趣。可能是
var\u dump
的异常。它不是
var\u dump()
。作业比较中出现了一些问题。祝你好运。以前从没见过这个。我在想一些“十六进制”操作,可能是遗留的。
if('608E-4234'='272E-3063')回显“你好”返回“hello”。可能是一些遗留问题或PHP错误。(PHP 7.3.16)。我找到了十进制值,它们与正在发生的操作不对应。这些字符串作为浮点数进行比较,如下面的答案所示。如果要将它们作为字符串进行比较,请使用
=