Почему в массив записывается только первое значение, а остальные плюсуются к нему а не в свою категорию?
Почему в массив записывается только первое значение, а остальные плюсуются к нему а не в свою категорию?
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; //возвращаем количество товаров
?>