从会话数组

时间:2018-03-12 14:02:42

标签: php session session-variables

- index html

<form method="post">
     <input type="text" name="name" value="bier">
      <input type="text" name="price" value="&euro;2,10">
        <input type="submit" name="add" value="add">
</form>

---索引php

<?php

    session_start();
    $id         = 1;
    foreach ($_SESSION["products"] as $product) {
        $id ++;
    }

    if(isset($_POST["add"])) {
        //session_destroy();

        $price = str_replace('€', ' ', $_POST["price"]);
        $_SESSION["products"][] = ['id' => $id, 'name' => $_POST["name"], 'price' => $price];
        header('location: num.php');
    }
    function getPrice($product) {
      return floatval(str_replace(',', '.', $product["price"]));
    }
    $totalPrice = 0.00;  

    foreach ($_SESSION["products"] as $product) {
        echo "<p><a href='num_del.php?id=".$product["id"]."'>X</a><span>".$product["id"]."</span>".$product["name"]."&euro;".$product["price"]."</p>";

        $totalPrice += getPrice($product);
    }
    echo "&euro;".number_format($totalPrice, 2);


?>

删除php:

<?php

    session_start();

    $sesID = $_GET["id"];   

    $key = array_search( $sesID, $_SESSION['products'] );
    unset($_SESSION['products'][$key]);

?>

这就是我现在所拥有的。它只删除id 1而不删除其他id。我在这里做错了什么?

真的需要帮助!

我找不到问题。希望有人能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我没有测试你的代码,但看起来你的array_search函数返回FALSE(0)而不是数组中的数组键。 你应该在未设置

之前添加一个if($ key!== FALSE)

也许做这样的事情会更简单。

$_SESSION["products"][$id] = ['id' => $id, 'name' => $_POST["name"], 'price' => $price];
删除功能

中的

session_start();
$sesID = $_GET["id"];
unset($_SESSION['products'][$key]);