如何从查询字符串中获取布尔值?

Nor*_*man 3 php url boolean query-string

如何在查询字符串中发送true或false值然后在php中使用它?我正在尝试如下操作,但即使两者都设置为false,它也会让我真实.我将从htaccess文件中获取这些值.

<?php
$var = $_GET['a'];
$bar = $_GET['b'];

if ($var && $bar)
{
echo "True";
}else
{
echo "False";
}

echo '<a href=?a=false&b=false>Check</a>';
?>
Run Code Online (Sandbox Code Playgroud)

Win*_*ail 7

他们都评估为True,因为你不能发送一个合适的布尔值truefalse通过查询字符串.两个字符串"true""false"在PHP中评估为TRUE.要么:

if ($var == "true" && $bar == "true") {
Run Code Online (Sandbox Code Playgroud)

或发送01替代"true"以及"false"从数据源(我不是你的.htaccess在这里如何适应完全清楚-我假设它是从一个表单字段变量按摩,但它的最终无关)

有关更多信息,请查看这个非常庞大的PHP真值值表.PHP的类型强制 - 也就是说,它将任意变量转换为其他类型变量的方法 - 很难预测并根据自己的逻辑运行.

也就是说,问题的查询字符串部分本质上不是PHP问题 - 没有规范的方式来通信GETPOST参数通信布尔值.如果你看,你会注意到每个网站都以自己的方式处理它 - 一些使用"true",另一些1,还有其他人使用TRUE.

最后一个选择 - JSON.虽然在您的情况下不太可能有所帮助,但我首选的与服务器交换数据的方法是将所有数据编码为单个JSON字符串.这有一些好处,例如让我对封装在我的JSON对象中的变量类型进行细粒度控制,但它的缺点是不能使用vanilla HTML表单.不过,如果您正在使用AJAX-ey Web应用程序,那就太棒了.