【问题标题】:Comparsion strange behavior 0 == 'one' [duplicate]比较奇怪的行为 0 == 'one' [重复]
【发布时间】:2017-04-24 13:32:39
【问题描述】:

我刚刚发现 PHP if 子句的奇怪行为

var_dump((bool)0);
var_dump((bool)"one");
var_dump(0 == "one");

打印出来

bool(false) bool(true) bool(true)

文档说“表达式被评估为其布尔值”,所以布尔值 0false"one"true 所以 0 == "one" 的结果应该是 false 但它是 @ 987654330@ 代替。

谁能解释一下?

【问题讨论】:

  • PHP == 似乎几乎一文不值。这似乎相关:php.net/manual/en/types.comparisons.php
  • "这种 php 行为是否在手册中的某处进行了解释?(与零比较的字符串)" 这不一样,'0' 和 '0000' 都被转换为 0,这是显而易见的
  • “这种 php 行为是否在手册中的某处进行了解释?(与零比较的字符串)”也不相同,因为它将被转换为 0,因为它将第一个数字转换为 int。不一样

标签: php


【解决方案1】:

"one" 转换为整数 0,因为您与整数 0 进行比较

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

在这里查看:http://php.net/manual/en/language.operators.comparison.php

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-02-17
  • 2011-10-07
  • 2020-01-24
  • 1970-01-01
  • 2014-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多