当前位置: 首页 > 面试题库 >

PHP将两个不同的字符串表示为相同

劳灵均
2023-03-14
问题内容

为什么以下语句返回true

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

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

我的猜测是PHP将它视为某种方程式,但似乎有些奇怪。

有人可以详细说明吗?


问题答案:

"608E-4234"是float数字格式,因此它们在比较时将转换为数字。

608E-4234并且272E-3063都将是float(0)因为它们太小。

对于==在php中,

如果将数字与字符串进行比较,或者比较涉及 数字字符串 ,则每个字符串将转换为 数字 ,然后以数字方式进行比较。

http://php.net/manual/zh/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'没有伤害。



 类似资料:
  • 问题内容: 我有两个字符串,它们看起来都一样: 但是,检查相等性表明它们不是。 我还尝试从命令提示符中复制两个字符串,并将它们作为新变量粘贴回去,但是它们仍然不相等。我有80%的把握是因为它们的编码方式很怪异,插入了一些我看不见的奇数字符,但是使用type()都只是显示为字符串。 有什么办法可以看到“真实”字符串?任何帮助表示赞赏。 问题答案: 他们是不一样的; using显示了这两个值之间的差异

  • 我一直在试图解决这个面试问题,它要求洗牌字符串,以便没有两个相邻的字母是相同的,例如, ABCC->ACBC 我想到的方法是 1)遍历输入字符串并将(字母、频率)对存储在某个集合中 2)现在通过拉取频率最高(即>0)的字母来构建一个结果字符串 3)每当我们拉一封信时,更新(减少)频率 4)如果所有字母的频率为零,则返回结果字符串 5)如果只剩下一个频率大于1的字母,则返回错误 我假设是Unicod

  • 问题内容: 通过搜索发现了类似的问题,但我是一位新的(糟糕的)程序员,无法理解答案。 我有一个.txt文件,其中包含多个字符串,以’-‘分隔。我使用拆分将一些字符串分成变量,其中两个相等,但是在if语句中它们不相等。 这将产生以下结果: 瑞典 瑞典 没有 在两个“ Sweden”字符串之前和之后都有一个空格,并且它们都用大写字母“ S”编写,但不相等吗?我在哪里搞砸了? 问题答案: 最后一个元素包

  • 问题内容: 我有这串 如何将此字符串拆分为每个子字符串包含2个字符的子字符串?我很困惑,因为我找不到分隔符来分隔它们。 问题答案:

  • "给定两个字符串s和t,编写一个函数来检查s是否包含t的所有字符(顺序与字符串t相同)。返回true或false。递归不一定。这是我用java写的代码片段。问题是输入: string1="st3h5irteuyarh!"和string2="shrey"它应该返回TRUE,但它返回FALSE。那是为什么?"

  • 但是,这并不适用于String类。请参见下面的代码: 这是因为字符串类和自声明类之间的差异吗?谢谢你的帮助!