Php 是否用特定id替换阵列?

Php 是否用特定id替换阵列?,php,arrays,multidimensional-array,replace,Php,Arrays,Multidimensional Array,Replace,我有这个阵列: Array ( [cart] => Array ( [0] => Array ( [id] => 1 [size] => XS [count] => 1 ) [1] => Array

我有这个阵列:

Array
(
    [cart] => Array
        (
            [0] => Array
                (
                    [id] => 1
                    [size] => XS
                    [count] => 1
                )

            [1] => Array
                (
                    [id] => 2
                    [size] => XS
                    [count] => 1
                )

        )

)
例如,在这个多维数组中,如何用id 2替换数组

我正在建立一个网上商店系统,想把T恤衫加入购物车。如果要再次添加已添加的项目,则应使用新输入(新大小、新计数)替换购物车会话变量


我如何检查是否已经添加了特定id

给定包含n个产品的$cart和$article作为要添加的新文章:

$c = count($cart);
for($i=0;$i<$c;$i++) {
    if ($cart[$i]['id'] == $article['id']) {
        $cart[$i] = $article;
    }
}

我不确定你到底在找什么,但我想这就行了

foreach ($array['cart'] as &$item) {
    if ($item['id'] == $_POST['id']) {
        $item = $_POST;
    }
} unset($item);

由于每个产品都有自己的唯一id,因此可以使用产品id作为数组中的索引,然后可以执行以下操作:

// pseudo code
function add2Cart($product_id, $count, $size) {
   global $cart;
   $cart[$product_id] = array(
      'count' => $count,
      'size' => $size
   );
)
然后您将有一个如下所示的数组:

[cart] => Array
    (
        [1] => Array
            (
                [size] => XS
                [count] => 1
            )

        [2] => Array
            (
                [size] => XS
                [count] => 1
            )

    )

其中,每个索引都是一个产品id号。

正如我所说:具有新内容,如新大小、新计数,但id相同。首先,我必须检查数组中是否存在特定id。我必须这样做foreach循环还是我可以更简单地检查它?如果你也需要修改它,这可能是最简单的方法释放由
和$item
创建的引用。Php不会自动销毁它。看全球!他没有像我说的那样使用id作为密钥,这只是一个伪代码,让他知道如何继续。另外,我说他可以使用产品id作为密钥。如果我使用id作为密钥会是什么样子?@KristerAndersson不使用globals这根本不是一个好做法!你在教学,请用好practices@mcuadros-你好像没读我的帖子?我想说明一种方法是使用产品id号作为索引。我还为我的示例编写了
pseudo
代码。我不认为stackoverflow是为其他人编写代码。当然,您不应该像上面的示例那样使用
global
。首先,我必须检查数组中是否有特定的id。我必须执行这个foreach循环吗?或者我可以更简单地检查它吗?您必须foreach yes,或者您必须将id设置为数组的键,然后只使array_key_存在或简单地设置为isset
[cart] => Array
    (
        [1] => Array
            (
                [size] => XS
                [count] => 1
            )

        [2] => Array
            (
                [size] => XS
                [count] => 1
            )

    )