为什么以下内容会返回1
而不是true
?
echo 5===5; //1;
答案 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) === true
或echo true
;)
echo将布尔值转换为字符串。