PHP — Есть ли способ преобразовать массив внутри строки в допустимый массив в PHP?

#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() функцию.