【问题标题】:How to retrieve data from mysql in a parent child format in php?如何在php中以父子格式从mysql中检索数据?
【发布时间】:2020-02-14 01:39:17
【问题描述】:

我有两张桌子,

question                  question choices

id question             id  question_id  choice
1    aaaa                1      1         ccc
2    bbbb                2      1         ddd
                         3      1         eee

我使用 php 使用left join 查询获取数据,当我打印数据时,它看起来像这样,

Array
(
    [id] => 1
    [question] => aaa
    [question_id] => 1
    [choice] => ccc
)
Array
(
    [id] => 1
    [question] => aaa
    [question_id] => 1
    [choice] => ddd
)
Array
(
    [id] => 1
    [question] => aaa
    [question_id] => 1
    [choice] => eee
)

但我想显示类似的东西,

Array
    (
        [id] => 1
        [question] => aaa,
           array
              (
                [question_id] => 1
                [choice] => ccc
              )
           array
              (
                [question_id] => 1
                [choice] => ddd
              )
    )

我想在父表中显示子表数据,这样我就可以防止问题重复。

我怎样才能使用core php?实现它

【问题讨论】:

  • 你能展示你目前用来检索数据的代码吗?

标签: php mysql arrays multidimensional-array


【解决方案1】:

这很简单。您需要循环响应数据并根据需要对其进行格式化。 这是使用您提供的示例数组的示例。

    $response_array = array(
  array
  (
      'id' => 1,
      'question' => 'aaa',
      'question_id' => 1,
      'choice' => 'ccc'
  ),
  array
  (
      'id' => 1,
      'question' => 'aaa',
      'question_id' => 1,
      'choice' => 'ddd'
  ),
  array
  (
      'id' => 1,
      'question' => 'aaa',
      'question_id' => 1,
      'choice' => 'eee'
  )
);
$result_array = array();
foreach ($response_array as $key => $value) {
    $result_array[$value['id']]['id'] = $value['id'];
    $result_array[$value['id']]['question'] = $value['question'];


    $result_array[$value['id']][] = array(
        'question_id' => $value['question_id'],
        'choice' => $value['choice']
    ); 
}

// it will print the array to check response
echo '<pre>';print_r($result_array);

【讨论】:

    【解决方案2】:

    你不需要使用连接查询,只需单独获取。

        //$questions; $question_choices;
        $questions = array_column($questions,null,'id');
        foreach($question_choices as $question_choice){
            $questions[$question_choice["question_id"]][] = $question_choice;
        }
    

    【讨论】:

    • 太棒了,它工作得很好,谢谢!!。我刚刚进行了一次更正 $questions[$question_choice["question_id"] - 1][] = $question_choice; 并且成功了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2021-01-04
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多