- index html
<form method="post">
<input type="text" name="name" value="bier">
<input type="text" name="price" value="€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"]."€".$product["price"]."</p>";
$totalPrice += getPrice($product);
}
echo "€".number_format($totalPrice, 2);
?>
删除php:
<?php
session_start();
$sesID = $_GET["id"];
$key = array_search( $sesID, $_SESSION['products'] );
unset($_SESSION['products'][$key]);
?>
这就是我现在所拥有的。它只删除id 1而不删除其他id。我在这里做错了什么?
真的需要帮助!
我找不到问题。希望有人能帮我解决这个问题吗?
答案 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]);