Около 2 часов я борюсь с этой проблемой. Я хочу вставить мои переменные $ _POST в массив $ _SESSION и добавить все новые данные, отправленные из формы в переменную сеанса. Теперь, когда я определяю свою переменную сеанса как массив, я так говорю?
$ _SESSION ['name'];
или вот так
$ _SESSION ['name'] = array();
У меня есть две переменные POST, и я хочу вставить их в массив сеансов.
Вот форма:
<form action="action.php" method="POST" >
<label>Moovie name: <input type="text" name="name" /></label><br />
<label>Price: <input type="text" name="price" /></label><br />
<input type="submit" value="Send" />
</form>
А вот action.php
<?php
session_start();
$_SESSION['name'] = array();
$_SESSION['price'] = array();
$name = $_POST['name'];
$price = $_POST['price'];
array_push($_SESSION['name'], $name);
array_push($_SESSION['price'], $price);
print_r($_SESSION['name']);
echo "<br>";
print_r($_SESSION['price']);
?>
Примечание: Если я говорю
$_SESSION['name']; instead of $_SESSION['name'] = array();
я получаю предупреждение: array_push() ожидает параметр 1 является массивом, null указанным в действии.php
Опять же, $ _SESSION ['name'] массив с самого начала?
Проверьте, если [ 'is_array'] (http://www.php.net/manual/en/function.is -array.php), если нет, то установите их в массивы и продолжите, если он уже был инициализирован, что '= array()' код не будет запущен, поэтому вы не будете его обнулять. (или, с тем, как работает PHP, вы можете просто просто использовать '$ _SESSION ['name'] [] = $ name;' и т. д., и если это не массив, это будет сделано для одного.) – Jon
@Jon 'is_array()' все равно вызовет уведомление, что ключ вообще не существует, используйте 'isset()' также/вместо: 'if (! isset ($ _ SESSION ['name'])) {$ _SESSION [ 'name'] = array(); } ' – DaveRandom