为什么这会导致PHP?

时间:2018-02-13 22:11:51

标签: php

为什么以下内容会返回1而不是true

echo 5===5;  //1;

3 个答案:

答案 0 :(得分:7)

首先,echo不是一个函数,它是一个语言结构,它实际上并没有“返回”任何东西。 echo用于输出字符串。它输出(不返回)1而不是true的原因是因为true不是字符串,它是一个布尔值,因此当它被字符串转换为字符串时,PHP会将其转换为到"1"。如果你想看到某些东西的真正价值,你需要使用类似var_dump()的东西。

var_dump(true);
var_dump((string) true);
var_dump(5 === 5);
var_dump(false);
var_dump((string) false);
var_dump(5 === 6);

输出:

bool(true)
string(1) "1"
bool(true)
bool(false)
string(0) ""
bool(false)

答案 1 :(得分:3)

根据PHP documentation, for string comparison

  

布尔值TRUE值转换为字符串“1”。 Boolean FALSE转换为“”(空字符串)。这允许在布尔值和字符串值之间来回转换。

简单来说,5===5 为真。但是,当你将它转换为字符串时,它的输出是“1”(如上所述)。要返回字符串的类型/值,您应该使用var_dump(),它将显示正确的类型:

var_dump(5===5); //bool(true);

请参阅this output

答案 2 :(得分:1)

你也可以尝试: echo (1===1) === trueecho true;)

echo将布尔值转换为字符串。