【问题标题】:Global variables in If statements - PHPIf 语句中的全局变量 - PHP
【发布时间】:2015-01-02 23:26:23
【问题描述】:

我正在寻找在 IF 语句中使用全局变量的示例,发现很少,但我仍然无法使我的代码正常工作。我在全局声明变量并尝试在 if 语句中分配值,然后检查变量是否包含某个值。当我回显变量时,它不会使用我在 if 语句中分配的值进行更新。我的代码:

<?php
    $cart = 0;

    if ((isset($_POST["b1"]) && $_POST["b1"] === "Add to cart")) { 
        global $cart; 
        $cart = 1;
        $query_HOD = "INSERT INTO orderLine 
                      (LINE_ID, PRODUCT_ID, QUANTITY, AMOUNT)
                      VALUES 
                      ('LINE1', '00001', 1, 6.99)";

        if ((isset($_POST["add"]) && $_POST["add"] === "Go to cart")) {
            echo $cart;
            if($cart === 1) {
                echo $cart;
                header("location:cart.php");
            }
            else {
                echo "<script type='text/javascript'>alert('Your cart is empty');</script>";
            }
        }
?>

isset 方法工作正常,我已经检查过了,在我看来,变量已更新,但仅在本地更新,不会影响全局变量。

【问题讨论】:

  • 你不应该在 if 代码之外定义全局吗?另外,我觉得您应该改用 cookie。
  • 我也试过了,结果一样,你能详细说明一下为什么我应该使用cookies吗?

标签: php global-variables


【解决方案1】:

也许您期望 全局 变量表示在请求之间持续存在的变量;那不是他们的样子。全局变量只是一个变量,可以在代码中的任何位置针对该请求访问。正如@user1231958 所说,您需要一个 cookie 或其他方式来保持状态。

【讨论】:

  • 我在这个阶段想要实现的只是检查是否选择了任何选项然后继续购物车,这应该是简单的检查机制,我可以使用cookie来实现吗?跨度>
  • 如果您想在“会话”(一个用户的请求序列)中存储内容,我会使用 PHP 会话。这将导致会话 ID cookie 被传递,然后您可以执行类似 $_SESSION["cart"] = "1"if ($_SESSION["cart"] == "1") 的操作。
  • Jacob,也许为其他用户添加一个关于 cookie 的简短示例是个好主意?乔,全局变量不是持久的,一旦请求结束(即加载网站),变量就消失了。这就是你想要 cookie 的原因,它们存储在会话之间(也许你还应该将操作保存在数据库中)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-20
  • 1970-01-01
  • 1970-01-01
  • 2022-09-27
相关资源
最近更新 更多