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

时间:2012-09-03 04:30:17

标签: 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>';
?>

1 个答案:

答案 0 :(得分:7)

他们都评估为True,因为您无法通过查询字符串发送正确的布尔truefalse。在PHP中,字符串"true""false"都评估为TRUE。要么:

if ($var == "true" && $bar == "true") {

或从您的数据源发送01而不是"true""false"(我不完全清楚.htaccess如何适应这里 - 我我假设它是从表单字段中按摩变量,但它最终是不相关的。)

有关更多信息,check out this incredibly massive table of PHP truth values. PHP的类型强制 - 也就是说,它将任意变量转换为其他类型变量的方法 - 很难预测并根据自己的逻辑运行。

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

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