AddToCart系统:array_push在“;错误级别”;


AddToCart-System: array_push pushes on the "wrong level"?

我正试图用以下代码创建一个"添加到购物车"功能:

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
                )
        )
)

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

我不确定你所说的"新推送的内容与上面的第一个条目"级别"相同"是什么意思,下面的场景是不可能的:

$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',
           ...
  );

这样做可以设置您的购物车:

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

然后,每个购物车项目都将是$_SESSION['cart'] 的子数组