AddToCart-System:array_push推动“错误的关卡”?

时间:2013-12-07 02:00:00

标签: php arrays multidimensional-array array-push

我正在尝试使用以下代码制作“添加到购物车”功能:

if (empty($_SESSION['cart'])) {
    $_SESSION['cart'] = array(
        "id" => $_GET['id'],
        "size" => $_POST['size'],
        "count" => $_POST['count']
    );
} else {
    array_push($_SESSION['cart'], array(
        "id" => $_GET['id'],
        "size" => $_POST['size'],
        "count" => $_POST['count']
    ));
}

这是print_r($_SESSION)

的输出
Array
(
    [cart] => Array
        (
            [id] => 1
            [size] => XS
            [count] => 1
            [0] => Array
                (
                    [id] => 2
                    [size] => XS
                    [count] => 1
                )
        )
)

你可以在数组中看到推送它的方法有什么问题。如果您知道我的意思,我希望新推送的内容与上面的第一个条目处于同一“级别”吗?

2 个答案:

答案 0 :(得分:1)

我不确定“上面的第一个条目”相同“级别”的新推送内容是什么意思,以下情况是不可能的:

$c = array(
           'id' => 1,
           'size' => 'X5',
           'count' => 1,

            // YOU CAN'T HAVE DUPLICATE KEYS IN YOUR ARRAY
           'id' => 2

  );

所以也许你应该在两个条件下都做array_push(对于当前的例子),所以你会得到以下结构:

$c = array(

          0 => array(
              'id' => 1,
              'size' => 'X5',
              'count' => 1,
           ),

          1 => array(
               'id'=>2,
               'size'=>'X3',
           ...

  );

答案 1 :(得分:0)

执行此操作来设置购物车:

$_SESSION['cart'][] = array("id" => $_GET['id'],"size" => $_POST['size'],"count" => $_POST['count']);

然后每个购物车项目都是$_SESSION['cart']

的子数组