php 有几个相同字符,PHP表示两个不同的字符串是相同的

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:

php == vs === operator

How do the equality (== double equals) and identity (=== triple equals) comparison operators differ?

为什么下面的语句返回true?

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

我也尝试过用单引号括住字符串。我唯一能得到它的方法是使用===操作符而不是==操作符。

我猜是PHP把它当作某种等式,但它看起来有点奇怪。

有人能详细解释一下吗?

608e -回声的回声4234 = 0;272e 3063 = 0 - 0 = = 0;

这并不php.net / strcmp醉?

PHP是弱/强类型连。取决于语境的,什么是声称是一个4点别的,在事实。所以,如果你想更好的使用===比较字符串。知道你的操作。

bokw:codepad.org / x8moswux @

strcmp存在非常为这个原因,在其他。

这将是有趣的知道,这是第一次当你encountered假定的问题。

我假定它是以@ hakra subtraction的hyphen作为一个标志。我的大修理后重新编辑你的坏的语法.)

实际上,这个问题是不充分duplicated,它不是问题的weakly/loosely typed只是关于PHP的行为,但会将==弦乐的数值个数相比与==,即使他们是两个字符串。这种行为是不同的从JavaScript,这也有==和===。

"608E-4234"是浮点数格式,因此它们在比较时会转换成数字。

608E-4234和272E-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运算符总是返回一个字符串,因此您只需使用

以东十一〔12〕而不是以东十一〔13〕无害。

国有企业也phpsadness.com /伤心/:47

Numerical Strings>是。它甚至不是使它难写在PHP应用程序的安全。

phresnel"不是真的。使用===自学PHP,这应该是在101"是比较这些值。它的唯一的人是来自confusing没有模糊语言比较,C和Java的类。

"lzkata:那是肯定的,但我也不会有那一个字符串比较时,将可能发生的literals,这样的事情。在其他的话:我也不会有预期的,那是当我比较两operands精确的相同的类型,有一个需要的===算子。当然,它的文档mentions DOC,但也很是模糊的,模糊的。

ucch。这是一个disgusting语言的变化。

测试浮标的是平等的吗?我认为好的消化不良。

"phresnel检查JavaScript’s = =,这是不同的从PHP的。所以我认为这是不正常的行为在PHP知识:)

重要的是,从运营商位比较手册:如果你的号码与比较字符串比较字符串或字符串,包括数字转换,然后每一numerically和执行数比较。

PHP使用IEEE754作为浮点数,您的数字太小,以至于它们的值为0。

参见:http://en.wikipedia.org/wiki/ieee_floating_point

Name        Common name         Base    Digits  E min   E max

binary32    Single precision        2   23+1    ?126    +127

binary64    Double precision        2   52+1    ?1022   +1023

但他是不是比较浮点数的字符串,和比较。那你应该失去在浮标的PHP

PHP是一jalf loosely型",是背后的场景的转换值,如果你是一个邪恶的=不熟悉的语言,如果他想把他需要的字符串比较使用strcmp =或人已经提到的。

是的,但我stoj点",这个答案是不回答的问题:它的表示使用的FP介绍PHP的,但它并不重要的状态,事实上如果你像FP值的字符串,它会转换成一个FP值"。

我认为PHP将此理解为一种科学的语法,它将被翻译为:

608 x 10^-4234 == 272 x 10^-3063

php将其解释为0 = 0。

php将这些字符串作为浮点数进行比较,它们都为零,因此必须使用===运算符,

我说在我的答案,这是因为在这两个字符串进行比较的浮点数是零,这是圆形,因此他们再等,但不相同的

我在试着回答。如果使用"==",还可以检查类型而不是值。如果使用"==",只需检查值是否相同。

你可以在这里和这里引用。

这就是它所看到的:http://www.wolframalpha.com/input/?I=608E-4234&数据集=http://www.wolframalpha.com/input/?I=27 2E-3063

因为它们不适合变量,所以它们都等于0,或者PHP选择的任何默认值,因此是等效的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值