为什么无法达到阵列拼接条件
Why I Cannot Reach An Array Splice Condition
<?php
require 'header.php';
if (isset ($_POST['id'])) {
$productid = $_POST['id'];
$size = $_POST['size'];
$wasfound = false;
$i = 0;
if (!isset ($_SESSION['cart']) || count($_SESSION['cart']) < 1) {
$_SESSION['cart'] = array (0 => array ("product_id" => $productid, "size" => $size, "quantity" => 1));
}
else {
foreach ($_SESSION['cart'] as $eachitem) {
$i++;
while (list ($key, $value) = each ($eachitem)) {
if (($key == "product_id" && $value == $productid) && ($key == "size" && $value == $size)) {
array_splice ($_SESSION['cart'], $i-1, 1, array (array ("product_id" => $productid, "size" => $size, "quantity" => $eachitem['quantity'] + 1)));
$wasfound = true;
}
}
}
if ($wasfound == false) {
array_push ($_SESSION['cart'], array ("product_id" => $productid, "size" => $size, "quantity" => 1));
}
}
header ("location: cart.php");
exit ();
}
?>
每次我添加 product_id 相同的 id 或不同的 id,相同的大小或不同的大小,这将是数组的新索引。我无法达到脚本的 array_splice 条件。
我需要使多个键的条件等于特定值。
有人可以帮忙吗?
foreach ($_SESSION['cart'] as $eachitem) {
//Magic happens here.
if($eachitem["product_id"] == $productId && $eachitem["size"] == $productId ){
array_splice ($_SESSION['cart'], $i-1, 1, array (array ("product_id" => $productid, "size" => $size, "quantity" => $eachitem['quantity'] + 1)));
$wasfound = true;
break;
}
}
如果您只想检查这两个键(product_id 和大小),它应该可以工作。你可以看到很少的 "break" 指令。它在这里是因为如果我们找到第一个匹配项,我们就不需要进一步查找。
<?php
require 'header.php';
if (isset ($_POST['id'])) {
$productid = $_POST['id'];
$size = $_POST['size'];
$wasfound = false;
$i = 0;
if (!isset ($_SESSION['cart']) || count($_SESSION['cart']) < 1) {
$_SESSION['cart'] = array (0 => array ("product_id" => $productid, "size" => $size, "quantity" => 1));
}
else {
foreach ($_SESSION['cart'] as $eachitem) {
$i++;
while (list ($key, $value) = each ($eachitem)) {
if (($key == "product_id" && $value == $productid) && ($key == "size" && $value == $size)) {
array_splice ($_SESSION['cart'], $i-1, 1, array (array ("product_id" => $productid, "size" => $size, "quantity" => $eachitem['quantity'] + 1)));
$wasfound = true;
}
}
}
if ($wasfound == false) {
array_push ($_SESSION['cart'], array ("product_id" => $productid, "size" => $size, "quantity" => 1));
}
}
header ("location: cart.php");
exit ();
}
?>
每次我添加 product_id 相同的 id 或不同的 id,相同的大小或不同的大小,这将是数组的新索引。我无法达到脚本的 array_splice 条件。
我需要使多个键的条件等于特定值。 有人可以帮忙吗?
foreach ($_SESSION['cart'] as $eachitem) {
//Magic happens here.
if($eachitem["product_id"] == $productId && $eachitem["size"] == $productId ){
array_splice ($_SESSION['cart'], $i-1, 1, array (array ("product_id" => $productid, "size" => $size, "quantity" => $eachitem['quantity'] + 1)));
$wasfound = true;
break;
}
}
如果您只想检查这两个键(product_id 和大小),它应该可以工作。你可以看到很少的 "break" 指令。它在这里是因为如果我们找到第一个匹配项,我们就不需要进一步查找。