JSON格式化Dropdown select的$ option值的输出?

时间:2014-12-23 15:17:38

标签: php json forms joomla chronoforms

这是一个新手问题......我在Joomla 3.3中有一个表单,chronoforms v5最新...当表单加载时,数据库填充我的第一个选择输入"采访日期"从我的数据库....工作得很好,一旦你选择了日期,第二个选择输入填充可用的时间段....这里的问题是在数组中输出数据库的方式是

Data-用>     时间大于7:00 am,7:15 am,9:30AM

现在,当第二个选择加载它时,它显示为7:00 am,7:15am,9:30 am .... 我希望能够使它们成为个体价值而不是一个价值...... 这是我目前用于"时间"第二个选择输入的选项......

    <?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 :(得分:1)

创建选项列表所需的结构如下:

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

您的数据似乎是嵌套数组,如$ form-&gt; 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 :(得分:0)

如果我没有记错,你的$d['time']会保留像早上7点到早上7点,早上9点,上午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);