1

我有以下结果集

ID SUBID DATA

1 0  Question1

1 1  Option1

1 2  Option2

2 0  Question1

2 1  Option1

2 2  Option2
...

我真的想要一个看起来像这样的数组

$item_data[1][1] = ID 1
$item_data[1][2] = Question1 <br> Option1 <br> Option2

$item_data[2][1] = ID 2
$item_data[2][2] = Question2 <br> Option1 <br> Option2

我绞尽脑汁尝试循环和字符串连接中的循环,但我无法让我的结果集看起来像这样

我试图将它放入一个数组中,这样我就可以输出数据 - 数据保持在一起很重要,但不同的 ID 彼此分离

未使用 SubID - 由于我无法更改的 db 设计,该表看起来像这样

select iseg.item_id ,iseg.item_subid, iseg.item_data from items i
    inner join  item_data iseg on iseg.item_id = i.item_id
union all
select iseg.item_stg_id ,iseg.item_subid, iseg.item_data from items_stg i
    inner join  item_data_stg iseg on iseg.item_stg_id = i.item_stg_id
    order by iseg.item_id desc, iseg.item_subid

Item 数据需要在连接前先在 PHP 中解析

4

4 回答 4

1
//adjust fetch method accordingly
$item_data = array();
while ($row = $result->fetch()) {
   if (!isset($item_data[$row->ID])) {
      $item_data[$row->ID] = array(1 => 'ID ' + $row->ID, 2 => '');
   }
   $item_data[$row->ID][2] .= ($item_data[$row->ID][2] ?
      ' <br> ' : '') . $row->DATA;
}

正如您所描述的那样,这应该创建数组,但这对我来说有点奇怪。 SUBID根本不习惯。

于 2012-09-20T16:13:04.580 回答
1

您还可以使数据库以对您来说可能更容易的格式返回数据:

SELECT id, group_concat(data)
FROM my_table
GROUP BY id

会像这样返回你一行:

1      Im data 1,Im data 2,Im data 3

这对您来说可能更容易处理。

于 2012-09-20T16:16:52.257 回答
1

假设$resultset是你的 mysql 结果集,你可以这样做:

while( $row = mysql_fetch_array($resulset)) {
    if (!isset($arr[$row['ID']])) {
       $arr[$row['ID']][1]  = 'ID ' . $row['ID'];
       $arr[$row['ID']][2]  = 'Im data '.$row['ID'].' <br>';
    } else {
       $arr[$row['ID']][2] .= 'Im data '.$row['ID'].' <br>';
    } 
}
foreach ($arr as &$ar) { //remove last <br> from elements
    $ar[2] = substr($ar[2], 0, -4);
}

var_dump($arr); //to check the output

在您的示例中,每个 ID 只有三行,但我上面的代码允许具有相同 ID 的任意数量的行,因此如果这种情况发生,这可能很重要。

于 2012-09-20T16:18:15.330 回答
0

让我们假设你有结果$result在 php

现在您可以拥有如下数据:-

$i=0;
while($row = mysql_fetch_assoc($result)){
    //You can use SUBID.
    if($row['SUBID']==0) { 
        $i++;
        $item_data[$i][1]=$row['ID'];
        $item_data[$i][2]="";
    }

    $item_data[$i][2].+=$row['DATA']."<br>";
}

编辑 --- ---- 我会建议使用 mysql 电源作为 @Alain 在这里的回答中建议

于 2012-09-20T16:12:39.510 回答