我正在通过post方法发送x= false;
布尔值。是Request::post['x']
或$_POST['x']
会获得布尔值false
还是获得null
值?
如果我尝试(!isset($_POST['x'] ))
,它会给我true
。但是我不明白为什么。
答案 0 :(得分:0)
如果$_POST['x']
将包含null
以外的任何内容,则isset()
将返回true
。
答案 1 :(得分:0)
请注意,使用!
(非逻辑运算符)意味着,如果未设置(!isset($_POST['x'] ))
(即null),则true
将返回x
。
$_POST
中的所有数据都是无类型的;都是字符串。如果需要发送布尔值,一种选择是将字符串与"true"
或"false"
进行比较。
if ($_POST['x'] === "true") {
// True
} elseif ($_POST['x'] === "false") {
// False
} else {
// Error - not equal to true or false string
}
关于PHP中的比较operators的注释:
如果$x == $y
等于$x
, $y
返回true
$x === $y
如果$x
等于$y
并且类型相同,则返回true