Как передать массив через post в другой файл php
Есть масссив $places: Array ( [row1] => 1 [seet1] => 5 [row2] => 8 [seet2] => 15 [row3] => 4 [seet3] => 14 )
Как передать данный массив в другой php файл через форму?
Я пытался делать так:
<form action="result.php" method="POST">
<input type="hidden" name="places" value="'.$places.'">
<input type="submit" name="booking" value="ЗАБРОНИРОВАТЬ МЕСТО">
</form>
И принимать их:
$data=$_POST;
if(isset($data['booking'])){
print_r($data['places']);
}
Но результат выводит лишь пустой массив. Я пробовал использовать json_encode и json_decode но не получалось.
Ответы (1 шт):
Вы не можете с помощью PHP просто так взять и вставить значение таким образом value="'.$places.'". Это нужно делать с помощью echo. Более того, таким образом массив таким образом тоже не передать, потому что на выходе будет строка "Array". На помощь приходит функция json_encode(). Преобразуя массив в строку, его уже можно будет вставить в качестве значения для поля:
<input type="hidden" name="places" value='<?= json_encode($places); ?>'>
Обратите внимание, что аттрибут value имеет одинарные кавычки. Это связано с тем, что функция json_encode() возвращает строку с двойными кавычками и html парсер это воспример как просто фигурную кавычку, а не целую, нужную нам строку.
В файле result.php мы с помощью функции json_decode() преобразуем нашу строку в объект\массив
Итого - файл с формой:
<?php $places = ['row' => 21]; // ваш массив?>
<form action="result.php" method="POST">
<input type="hidden" name="places" value='<?= json_encode($places); ?>'>
<input type="submit" name="booking" value="ЗАБРОНИРОВАТЬ МЕСТО">
</form>
result.php:
<?php
$data=$_POST;
if(isset($data['booking'])){
print_r(json_decode($data['places']));
}
?>