Почему в массив записывается только первое значение, а остальные плюсуются к нему а не в свою категорию?

Почему в массив записывается только первое значение, а остальные плюсуются к нему а не в свою категорию?

  array(1) {
  ["cart"]=>
  array(7) {
    ["Mexican  Pizza"]=> // первый массив
    array(3) {
      ["name"]=>
      string(14) "Mexican  Pizza"
      ["price"]=>
      string(3) "123"
      ["img"]=>
      NULL
    }
    ["Julienne"]=>
    int(1)
    ["ZEUS  Pizza"]=>
    int(1)
    ["Margarita"]=>           // остальные масивы которые долюжны были отправиться как первый с инфой 
    int(1)
    ["Salmon  with spinach"]=>
    int(1)
    ["Pepperoni"]=>
    int(1)
    ["Chicago with turkey"]=>
    int(1)
  }
}

Обработчик

<?php
$name = $_POST['pid'];
$price = $_POST['sku'];
$img = $_POST['img'];
//получаем id товара
 

        session_start();
        if (!isset($_SESSION['cart'])) {//если сесия корзины не существует
            $temp = 
            Array(
  $name => Array( 
      'name' => $name,
      'price' => $price,
      'img' => $img
  )

   
);
             //в масив заносим количество тавара 1 
        } else {//если в сесии корзины уже есть товары
            $temp = $_SESSION['cart'];//заносим в масив старую сесию
            if (!array_key_exists($name,   $temp)) {//проверяем есть ли в корзине уже такой товар
            $temp[$name]= 1;
              //в масив заносим количество тавара 1
            }      
        }
          //в масив заносим количество тавара 1 
        
        $count = count($temp);//считаем товары в корзине
        $_SESSION['cart'] = $temp;//записывае в сесию наш масив
        echo $count; //возвращаем количество товаров
?>

Ответы (1 шт):

Автор решения: Oliver Patterson

Я думаю как-то так вы хотели?

<?php
$name = $_POST['pid'];
$price = $_POST['sku'];
$img = $_POST['img'];
// получаем id товара


session_start();


if (!isset($_SESSION['cart']))
{
    // если сесcия корзины не существует
    $temp = Array();
}
else
{
    // если существует
    $temp = $_SESSION['cart'];
}

// Если нет товара с таким именем, значит создаем
if (!array_key_exists($name, $temp))
{
    $temp[$name] = Array(
        'name' => $name,
        'price' => $price,
        'img' => $img
    );
}

$count = count($temp);//считаем товары в корзине
$_SESSION['cart'] = $temp;//записывае в сесию наш масив
echo $count; //возвращаем количество товаров
?>

→ Ссылка