【问题标题】:How do I get a boolean from a querystring?如何从查询字符串中获取布尔值?
【发布时间】:2012-09-03 04:30:16
【问题描述】:

如何在查询字符串中发送真或假值,然后在 php 中使用它?我正在尝试执行以下操作,但即使两者都设置为假,它也会给我真。我将从 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>';
?>

【问题讨论】:

    标签: php url boolean query-string


    【解决方案1】:

    它们都评估为 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 对象中的变量类型进行细粒度的控制,但它的缺点是不能用普通的 HTML 表单来做。不过,如果您正在开发一个 AJAX-ey 网络应用程序,那就太好了。

    【讨论】:

    • 我们现在决定 0 和 1。谢谢你的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多