gpt4 book ai didi

php - 为什么 PHP 将带有字母 E 的字符串转换为数字?

转载 作者:IT老高 更新时间:2023-10-28 11:50:28 24 4
gpt4 key购买 nike

为什么下面的语句返回true

"608E-4234" == "272E-3063"

我也尝试过在字符串周围加上单引号。我可以让它评估为 false 的唯一方法是使用 === 运算符而不是 ==

我的猜测是 PHP 将其视为某种等式,但它似乎有点奇怪。

谁能详细说明?

最佳答案

"608E-4234"float number format ,所以他们在比较时会转换成数字。

608E-4234272E-3063 都将是 float(0) 因为它们太小了。

对于 php 中的 ==

If you compare a number with a string or the comparison involves numerical strings, then each string is converted to a number and the comparison performed numerically.

http://php.net/manual/en/language.operators.comparison.php

注意:

同时具有 ===== 的 javascript 中的行为如何?

答案是行为与 PHP 不同。在 javascript 中,如果你比较两个具有相同类型的值,===== 相同,因此与两个相同类型的值进行比较时不会发生类型转换.

在 javascript 中:

608E-4234 == 272E-3063 // true
608E-4234 == "272E-3063" // true
"608E-4234" == 272E-3063 // true
"608E-4234" == "272E-3063" // false (Note: this is different form PHP)

所以在 javascript 中,当你知道结果的类型时,你可以使用 == 而不是 === 来保存一个字符。

例如,typeof 操作符总是返回一个字符串,所以你可以直接使用

typeof foo == 'string' 而不是 typeof foo === 'string' 没有坏处。

关于php - 为什么 PHP 将带有字母 E 的字符串转换为数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12598407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com