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

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

Данные-> время->7:00 утра 7:15 утра 9:30 утра

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

    <?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);
    ?>

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

2 ответа

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

[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);
?>

Если я не ошибаюсь $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);
Другие вопросы по тегам