Я хочу иметь возможность разместить массив, содержащий …
$food = array (
'food_1' => 'ice cream ',
'food_2' => 'pizza'
);
<input type="text" id="in_foods[]" value="<?=$food;?>" />
на другую страницу, но это не похоже на работу. Что я делаю неправильно?
Более чистым решением будет:
1- преобразовать массив в строку с помощью функции implode:
$foods = implode(',',$foods);
2- Поместите его в поле ввода текста для отправки:
<input type="text" id="foods" value="<?=$food;?>" />
3- На другой странице преобразовать строку обратно в массив:
$foods = explode(',',$_POST['foods'])
Пытаться 😉
Вы не можете просто опубликовать такую структуру данных. Вы должны получить уведомление о том, что вы пытаетесь преобразовать массив в строку.
Попробуйте вместо этого поместить свой массив в сессию. Таким образом, он остается массивом между вызовами.
session_start();
$_SESSION['food'] = $food;
Попробуйте с этим кодом:
<?php
$food = array (
'food_1' => 'ice cream ',
'food_2' => 'pizza'
);
$food = implode(",", $food);
?>
<input type="text" id="in_foods[]" value="<?=$food;?>" />
Так как $ food — это массив.
<input type="text" id="in_foods[]" value="<?
if (isset($food)) { echo $food['food_1'].', '.$food['food_2']; } ?>"/>
Если размер массива $ food не определен, то вы можете использовать функцию implode, чтобы сделать его одной строкой и вывести его на экран.
Я предполагаю, что вы не хотите отмечать понравившиеся продукты из заранее определенного списка продуктов или чего-то подобного. В этом случае <input type="text">
поле не правильный выбор. использование <input type="checkbox">
вместо (или <select multiple>
).
$foodOptions = array('burger', 'vergtables', 'berries')
foreach($foodOptions as $foodOpt) {
$checked = in_array($foodOpt, $foods)?' checked':null;
echo '<input type="checkbox" value="' , $foodOpt , '" name="in_foods[]"', $checked ,'><br>';
}