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

比较String与Integer会得出奇怪的结果

蔺翰音
2023-03-14
问题内容

我对为什么该操作有效感到非常困惑。有人可以解释吗?

$test1 = "d85d1d81b25614a3504a3d5601a9cb2e";
$test2 = "3581169b064f71be1630b321d3ca318f";

if ($test1 == 0)
  echo "Test 1 is Equal!?";
if ($test2 == 0)
  echo "Test 2 is Equal!?";

// Returns: Test 1 is Equal!?

为了澄清起见,我正在尝试将字符串"0"$test变量进行比较。我已经知道要修复可以随便附上0in ""s中的代码

我想知道这是PHP错误,服务器错误还是某种有效的操作。根据此操作
无效

编辑: 从头开始,显然它确实提到字符串和0之间的松散比较是正确的。但是我仍然不知道为什么。

编辑2: 我修改了我的问题,为什么$test2"3581169b064f71be1630b321d3ca318f"不起作用?


问题答案:

从PHP手册:

字符串转换为数字

在数字上下文中评估字符串时,结果值和类型的确定如下。

如果该字符串包含任何字符“。”,“ e”或“ E”,则将被视为浮点型。否则,它将被评估为整数。

该值由字符串的初始部分给出。如果字符串以有效的数字数据开头,则将是使用的值。否则,该值为0(零)。有效数字数据是可选的符号,后跟一个或多个数字(可选地包含小数点),后跟可选的指数。指数是一个“
e”或“ E”,后跟一个或多个数字。



 类似资料:
  • 问题内容: 我遇到此行的问题(在下面评论): 输出。 但是,输出。 现在,我不明白为什么我得到这个结果: 问题答案: 您缺少一组括号: 在您的版本中,正在通过与进行比较,这不是您想要的。 通常,的优先级高于,这就是为什么将其评估为的原因。

  • 问题内容: 我现在对Java左移操作有些困惑, 但 看起来像是更多的偏移值,该值的模数为32。 感谢大家对JLS的答复和报价。 我只想知道更多。是否知道以这种方式进行设计的原因?还是只是一些约定?显然C没有这个怪癖? 感谢@paxdiablo。看起来C声明了未定义的行为。 我在这里有一些个人假设: ARM体系结构参考手册A7.1.38 语法LSL Rd,Rm,#immed_5 哪里: Rd 是存储

  • 问题内容: 如果我输入的任何值都小于24,它会打印“ You will be old …”语句。如果我输入的任何值都大于24(最大为99),它将打印“ you old”语句。 问题是,如果您输入100或更大的值,它会显示“您将在知道之前变老”。声明。 问题答案: 您正在针对另一个字符串值(而不是整数值)测试一个字符串值。 应该 在Python中,您可以对字符串使用大于/小于符号,但是您怎么想都行不

  • 在C中比较相同的浮点值 比较float和float literal的奇怪输出 我读了上面关于浮点的链接,但甚至得到奇怪的输出。 现在按照推广规则,“其他如果”难道不是必须印出来的吗? 但是,这里是打印“if”

  • 我已经阅读了这个问题的答案,但是我仍然不知道它如何返回以及为什么第二行中的代码返回。

  • 问题内容: 我的代码在以下一行中断了一个nullpointerexception: 在此语句之前,我声明stringVariable并将其设置为数据库字段。 在此声明中,我试图检测该字段是否具有值,但是不幸的是它损坏了! 有什么想法吗? 问题答案: 用 为了测试是否是。 该方法(以及所有其他方法)需要为不是。