PHP: Массив => Неопределенный индекс

#arrays #session #post #shopping-cart

#массивы #сессия #Публикация #корзина покупок

Вопрос:

Я работаю над упражнением для колледжа о корзине покупок, я преобразовал значения POST в массив, однако, когда я повторяю эти значения массива, я получаю следующее сообщение:

 Notice: Undefined index: item in line 40
Notice: Undefined index: quantity in line 40
  

Вот строка 40:

 echo "1. ".$_SESSION['lista']['item']." ".$_SESSION['lista']['quantity']." unidades".", ".$_SESSION['lista']['price']." CRC.";
  

Вот полный сценарий:

     <?php

session_start();

//Obtengo la lista
$lista[]= $_SESSION['lista'];

//Guardo un valor en la lista
/*
$articulo= $_POST['articulo'];
$cantidad= $_POST['cantidad'];
$codigo= $_POST['codigo'];
*/

//Listado
$articulos = array(

  'Papaya' => 500, 'Banano' => 50, 'Mango' => 150, 
  'Leche' => 500, 'Cafe' => 1200, 'Mantequilla' => 300,
  'Pan' => 450, 'Jugo' => 780, 'Mani' => 800,
  'Yogurt' => 450, 'Cerveza' => 550, 'Vino' => 2500,
  );

$_SESSION['lista'] = array(
'item' => ($_POST['articulo']), 
'quantity' => ($_POST['cantidad']),
'code' => ($_POST['codigo']),
);

//precio
$precio = $articulos[($_SESSION['lista']['item'])] * $_SESSION['lista']['quantity'];

$_SESSION['lista'] = array('price' => $precio,);


//listado
echo  "<b>LISTADO DE COMPRA</b></br>";


echo "1. ".$_SESSION['lista']['item']." ".$_SESSION['lista']['quantity']." unidades".", ".$_SESSION['lista']['price']." CRC.";

/*foreach($_SESSION['lista'] as $key => $item) {
  echo $key, '. ', $item['item'], ' ', $item['quantity'], ' units';
}
*/

//Regreso a la lista
$_SESSION['lista'] = $lista;



var_dump($_SESSION); $lista;

echo "</br> <a href='index.html'>Volver al indice</a>";

//SESSION_DESTROY = Elimina todo

//Imprimo lo que hay en session
var_dump($_SESSION);

?>
  

Ответ №1:

Это означает, что в массиве $_SESSION[«lista»] нет элемента для «элемента» или «количества».

Чтобы увидеть полное содержимое $_SESSION, вы можете использовать print_r():

 print_r($_SESSION);
  

Обратите внимание, что в HTML это будет выглядеть некрасиво, вам нужно будет использовать «Просмотреть исходный код» в вашем браузере, чтобы увидеть его в хорошем виде.

Комментарии:

1. Вы были правы, элемента нет в массиве, как и количества, насколько я могу судить. Я не понимаю, что я делаю не так!

Ответ №2:

Что вы делаете неправильно, так это вывод пустого содержимого перед вызовом session_start, смотрите первую строку, которая содержит <?php , вы заметите, что перед тегом есть несколько пробелов.

     <?php
^^^^
  

вам нужно удалить их, чтобы сессия началась правильно!