Web

Преобразование строки JSON в SELECT

Я пытаюсь преобразовать строку JSON в <select> html , но мне нужно добиться всего этого на PHP, без JS или jQuery. Ценю любую помощь.

Немного предыстории: результат в формате JSON содержит 2 поля - timestamp и chapter_name. Они используются для перехода видео к месту в секундах через раскрывающийся список и пользователь может выбрать, к какой главе он хочет перейти.

$json_str = ' { "timestamp":"0","chapter_name":"Введение" } , { "timestamp":"20","chapter_name":"Глава 1" } , { "timestamp":"40","chapter_name":"Глава 2" } , { "timestamp":"100","chapter_name":"Глава 3" } ';

 

$timestamps_arr = json_decode($json_str, true);

$timestamps_output = "

    <label for=\"sel_timestamps\">Jump to: </label>

    <select id=\"sel_timestamps\" name=\"sel_timestamps\" onchange=\"VidTimeJump()\">";

 

foreach($timestamps_arr as $timestamp) {

    echo '<option value="'.$timestamp['timestamp'].'">'.$timestamp['chapter_name'].'</option>';

}

 

$timestamps_output .= "</select>";

 

Ответ 1

Используемый вами JSON некорректен. Чтобы ваш код работал, вы должны добавить свои <option> ( $timestamps_output .= ...) вместо того, чтобы сразу вызывать echo. В итоге вы получите строку $timestamps_output, содержащую <label> и <select> и ваши параметры.

$json_str = '[ { "timestamp":"0","chapter_name":"Introduction" } , { "timestamp":"20","chapter_name":"Chapter 1" } , { "timestamp":"40","chapter_name":"Chapter 2" } , { "timestamp":"100","chapter_name":"Chapter 3" } ]';

 

$timestamps_arr = json_decode($json_str, true);

$timestamps_output = "

    <label for=\"sel_timestamps\">Перейти к: </label>

    <select id=\"sel_timestamps\" name=\"sel_timestamps\" onchange=\"VidTimeJump()\">";

 

foreach($timestamps_arr as $timestamp) {

    $timestamps_output .= '<option value="'.$timestamp['timestamp'].'">'.$timestamp['chapter_name'].'</option>';

}

 

$timestamps_output .= " </select>";

 

Для вывода, используйте echo $timestamps_output;

<label for="sel_timestamps">Перейти к: </label>

<select id="sel_timestamps" name="sel_timestamps" onchange="VidTimeJump()">

<option value="0">Введение</option>

<option value="20">Глава 1</option>

<option value="40">Глава 2</option>

<option value="100"> Глава 3</option>

</select>

Схожие статьи

Web

Когда я использую Plesk, отображается фатальная ошибка PHP

Web

Как преобразовать серию «родитель-потомок» в иерархическое дерево

Web

Как экранировать строки в SQL Server с помощью PHP

Web

Регулярное выражение с атрибутами шорткодов Wordpress