PHP 在转换为布尔值时,以下值被认为是 false:
布尔值 false 本身
整型值 0(零)
浮点型值 0.0(零)
空字符串 "",以及字符串 "0"
不包括任何元素的数组
原子类型 NULL(包括尚未赋值的变量)
所有其他值都被认为是 true,包括非空字符串,即使它们包含的是 "false" 或 "0" 这样的值。
这是因为在 PHP 中,字符串的布尔值是由其长度决定的,而不是由其内容决定的
<?php
if ($string === "false") {
// 处理字符串等于 "false" 的情况
}
$boolStr = 'false';
var_dump(eval("return $boolStr;")); //bool(false)
$boolStr = 'False';
var_dump(eval("return $boolStr;")); //bool(false)
$boolStr = 'FALSE';
var_dump(eval("return $boolStr;")); //bool(false)
$boolStr = 'true';
var_dump(eval("return $boolStr;")); //bool(true)
$boolStr = 'True';
var_dump(eval("return $boolStr;")); //bool(true)
$boolStr = 'TRUE';
var_dump(eval("return $boolStr;")); //bool(true)
var_dump((bool)"false"); // 输出 bool(true)
var_dump((bool)"0"); // 输出 bool(false)
var_dump((bool)""); // 输出 bool(false)
var_dump((bool)0.0); // 输出 bool(false)
var_dump((bool)"0.0"); // 输出 bool(true)
var_dump((bool)[]); // 输出 bool(false)
var_dump((bool)null); // 输出 bool(false)