$q = $_POST['q'];
$inCart = isset($_COOKIE['cart']) ? unserialize($_COOKIE['cart']) : array();
function alreadyInCart() {
global $inCart, $good, $q;
foreach ($inCart as $inCart1) {
if ($inCart1[0] == $good->id) { // if this good already in cart
$inCart1[1] = $inCart1[1] + $q; // write sum of q's to existing array
return true; // and return true
}
}
return false; // return false if not
}
if (alreadyInCart() == false) { // if good added to cart for the first time
$inCart[] = array($good->id, $q); // add array at the end of array
}
您好。所以我的问题是我正在运行一个函数来查明$good->id
是否已经在2d $inCart
数组中。
$inCart
看起来像这样:
Array
(
[0] => Array
(
[0] => 6
[1] => 1
)
[1] => Array
(
[0] => 5
[1] => 1
)
)
其中[0]是一个好的ID,[1]是购物车中这个商品的数量。
所以我跟踪该函数实际上做了我想要的并按预期返回true / false,但看起来它只在它自己内部。因为如果我将print_r($inCart1[1])
置于函数内部,它会加起来并按预期输出总和。但是当我在代码末尾(函数外部)输出数组时,数量不会累加,只是保持在函数运行之前的状态。
为什么会发生这种情况?
答案 0 :(得分:0)
好的,如果有人遇到同样的问题:找到解决方案。
或者我应该说发现了一个错误?
问题在于foreach ($inCart as $inCart1)
。必须替换为foreach ($inCart as &$inCart1)
才能更改循环中的数组值。另一方面,它只是读取值,位不能改变它们。