【问题标题】:Parsing redundant MySQL result into structured array将冗余 MySQL 结果解析为结构化数组
【发布时间】:2025-12-06 13:35:01
【问题描述】:

我的 MySQL 查询输出是

dbcol_a | dbcol_b
数据A1 |数据B1
数据A1 |数据B2
数据A2 |数据B3
数据A2 |数据B4
数据A2 |数据B5

我想解析成这样的结构化数组:

arcol_a | arcol_b
数据A1 |数据B1
----------|数据B2
数据A2 |数据B3
----------|数据B4
----------|数据B5

谢谢

【问题讨论】:

    标签: php mysql arrays parsing join


    【解决方案1】:
    $arr = array();
    
    while($row = mysql_fetch_assoc($result)) {
       if(isset($arr[$row['arcol_a']])) {
        $arr[$row['arcol_a']][] = $row['arcol_b'];
      } else {
        $arr[$row['arcol_a']] = array($row['arcol_b']);
      }
    }
    

    【讨论】:

      【解决方案2】:

      应该这样做:

      $desired_array = array();
      foreach ($query_output as $value)
      {
        $desired_array[$value['arcol_a']][] = $value['arcol_b'];
      }
      

      这样,您可以将第二列中的每个值添加到具有第一列索引的数组中。

      【讨论】:

        【解决方案3】:
        1. 制作一个名为 arcol_a_array
        2. 循环通过您的 数据。对于每一行,检查并查看 如果当前的arcol_a 值是 arcol_a_array 数组。如果不, 添加它。这个键的值应该是一个有一个元素的数组——当前行的arcol_b的值
        3. 如果arcol_a 值存在于arcol_a_array 哈希表中,请修改数组以添加来自arcol_b 的新值。

        【讨论】: