从函数PHP更改全局2d数组?
你好。所以我的问题是,我正在运行一个函数来确定从函数PHP更改全局2d数组?,php,arrays,function,Php,Arrays,Function,你好。所以我的问题是,我正在运行一个函数来确定$good->id是否已经在2d$incontat数组中 $incontat看起来像这样: $q = $_POST['q']; $inCart = isset($_COOKIE['cart']) ? unserialize($_COOKIE['cart']) : array(); function alreadyInCart() { global $inCart, $good, $q; foreach ($inCart as
$good->id
是否已经在2d$incontat
数组中
$incontat
看起来像这样:
$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
}
其中,[0]是商品ID,[1]是购物车中该商品的数量
所以我跟踪了这个函数,它实际上做了我想做的事情,并按预期返回true/false,但看起来它只是在自身内部做的。因为如果我把print\r($invent1[1])
放在一个函数里面,它会像预期的那样加起来并输出总和。但是,当我在代码末尾(函数外部)输出数组时,数量并没有增加,只是保持在函数运行之前的状态
你知道为什么会这样吗?好的,如果有人面临同样的问题:找到解决方案 还是应该说我发现了一个错误 问题在于
foreach($incontat为$incontat1)
。必须用foreach($incontat as&$incontat1)
替换,才能更改循环中的数组值。另一种方式,它只是读取值,位不能更改它们
Array
(
[0] => Array
(
[0] => 6
[1] => 1
)
[1] => Array
(
[0] => 5
[1] => 1
)
)