JSON Форматирование вывода значения $ option для выпадающего списка?

Это вопрос новичка … У меня есть форма в Joomla 3.3 и chronoforms v5 самой последней … Когда форма загружает базу данных, мой первый выбор ввода заполняется «датами собеседования» из моей БД …. отлично работает, как только вы выберите дату, второй выбранный вход заполняется доступными временными интервалами …. проблема здесь в том, как БД выводится в массиве

Данные->
по времени> 7:00 am,7:15am,9:30am

Прямо сейчас, когда загружается второй выбор, он появляется примерно в 7:00 утра 7:15 утра 9:30 утра ….
Я хочу иметь возможность сделать их индивидуальные ценности, а не все одно значение …
Это код, который я сейчас использую для опций «time» для второго ввода select …

    <?php
$options = array();
if ( !$form->data['Data'] || count($form->data['Data']) < 1 ) {
// no result was found
$options[] = 'Please select a category';
} else {
foreach ( $form->data['Data'] as $d ) {
$options[$d['interviewdate']] = ($d['time']);
}
}
echo json_encode ($options);
?>

Это возможно?

1

Решение

Структура, необходимая для создания списка опций, выглядит следующим образом:

[0] => array ('text' => 'aaa', 'value' => 'xxx'),
[1] => array ( . . .

И ваши данные, кажется, находятся во вложенном массиве, как $ form-> data [‘Data’] [‘time’]?

В этом случае текст и значение могут быть одинаковыми, поэтому код будет примерно таким:

<?php
$options = array();
if ( !$form->data['Data']['time'] ) {
// no result was found
$options[] = array('text' => 'Please select a category', 'value' => '');
} else {
$data = explode(',', $form->data['Data']['time']);
foreach ( $data as $d ) {
$options[] = array('text' => $d['time'], 'value' => $d['time']);
}
}
echo json_encode($options);
?>
1

Другие решения

Если я не ошибаюсь $d['time'] содержит значения, такие как «7:00 утра 7:15 утра 9:30 утра». И если это так, то вы можете просто использовать explode(',', $d['time']) который даст вам массив раз вместо строки.

$options = array();
$form = new stdClass();
$form->data['Data'] = array(
array(
'interviewdate' => 'date', 'time' => '7:02am,7:25am,9:40am'
),
array(
'interviewdate' => 'date2', 'time' => '7:05am,7:35am,19:40am'
)
);
if ( !$form->data['Data'] || count($form->data['Data']) < 1 ) {
// no result was found
$options[] = 'Please select a category';
} else {
foreach ( $form->data['Data'] as $d ) {
foreach(explode(',', $d['time']) as $time){
$options[] = array($d['interviewdate'] => $time);
}
}
}
echo json_encode ($options);
0