用特定的id替换数组?

时间:2013-12-07 10:04:53

标签: php arrays multidimensional-array replace

我有这个数组:

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

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

        )

)

如何在这个多维数组中替换id为2的数组?

我正在建立一个在线商店系统,并希望将T恤添加到购物车中。如果已添加的文章将再次添加,则应将cart-session-variable替换为新输入(新大小,新计数)。

如何检查是否已添加特定ID?

3 个答案:

答案 0 :(得分:1)

给出带有n个产品的$ cart和要添加的新文章的$ article:

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

如果您使用product_id作为密钥

if (isset($cart[$article['id']]) {
    $cart[$article['id']] = $article;
}

答案 1 :(得分:1)

不确定你想要的是什么,但我认为这样做。

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

答案 2 :(得分:0)

由于每个产品都有自己唯一的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号。