#php #html #arrays
#php #HTML #массивы
Вопрос:
У меня возникла простая проблема, с которой, я думаю, мне нужна помощь.
Итак, у меня есть lt;input type="hidden" name="valid_time[]" value="lt;?php print_r($valid_time); ?gt;"gt;
метка.
Здесь значение этого ввода равно
Array ( [Monday] =gt; Array ( [start_time] =gt; 10:00:00 [end_time] =gt; 17:00:00 ) [Tuesday] =gt; Array ( [start_time] =gt; 10:00:00 [end_time] =gt; 17:00:00 ) [Wednesday] =gt; Array ( [start_time] =gt; 10:00:00 [end_time] =gt; 17:00:00 ) [Thursday] =gt; Array ( [start_time] =gt; 10:00:00 [end_time] =gt; 17:00:00 ) )
Теперь, когда я отправляю форму и получаю значение этого ввода, я получаю результат строки.
print_r($_POST['valid_time'][0])
=gt; это дает мне значение, но в виде строки.
Мне нужно [0]
, потому что предполагаемый массив находится внутри $_POST['valid_time']
, который также является массивом.
print_r(gettype($_POST['valid_time'][0]));
дает мне string
.
Что я хочу, так это иметь это в виде массива, чтобы я мог перебирать его. Есть ли способ в PHP сделать это?
PS: Если этот пост дублируется, пожалуйста, оставьте ссылку, и я попробую. Заранее спасибо!
Комментарии:
1. Не используйте
print_r()
для этого. Вместо этого вы можете использоватьlt;?= json_encode($valid_time) ?gt;
, а затем декодировать json с помощью:$_POST['valid_time'][0] = json_decode($_POST['valid_time'][0]);
, чтобы снова получить его в виде массива PHP. Другим вариантом было бы создать несколько скрытых полей ввода, по одному для каждого значения, которое вы хотите опубликовать.2. Хорошо, я попробую. Если это сработает, я буду рад отметить ваше предложение как ответ на мою проблему. Так что, если вы не возражаете, вы можете сделать свой комментарий в качестве ответа.
Спасибо тебе
3. @M. Эрикссон, так что я сделал, чтобы обернуть json_encode() внутри функции htmlspecialchars (), и это, наконец, сработало. Спасибо тебе.
Ответ №1:
Итак, я все понял.
Что касается значения внутри входных данных, то оно должно быть
lt;?php echo htmlspecialchars(json_encode($array)) ?gt;
Теперь, после публикации, вы можете получить его с помощью:
json_decode($_POST['array'])
Так что, в принципе, я просто забыл поставить htmlspecialchars()
функцию.