从函数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
        )

)