0

我有一张桌子:

id   title     type   expl   bubble_content   onfocus   req   dorder   label    mirror
1    Fullname  1      1      Your fullname    Yes       0     0        0        NULL

然后是另一个表:

id     fieldid    relid    dorder
4      1          2        0
5      1          1        0

我将如何加入这两个表,以便结果类似于:

0 => array(
     'id' => 1,
     'title' => 'Fullname',
     .... etc ....
     'relid' => 2,
     'relid' => 1),
1 => array(
     .... etc ....
))

我试过使用 INNER JOIN / LEFT JOIN 但这会为每个 relid 生成两行/数组,我真的希望特定 fieldid 的所有数据都存在于同一个数组中,如上图所示。

4

1 回答 1

1

数组中不能有 2 个同名的键。在您的示例中,您有 2 个“relid”,第二个将覆盖第一个。

您可以编写 PHP 代码,以便将这些行合并为一个:

    $output = array();
    while ($row = mysql_fetch_assoc($result))
    {
        // Capture all values for this row first.
        // If this is the new row from the first table, store.
        if (!isset($output[$row['id']]))
        {
            $output[$row['id']] = $row;

            // Make a new array for relids.
            $output[$row['id']]['relids'] = array();
        }


        $output[$row['id']]['relids'][] = $row['relid']; 

    }

您的输出数组将如下所示:

0 => array(
 'id' => 1,
 'title' => 'Fullname',
 .... etc ....
 'relids' => array(2, 1),
1 => array(
 .... etc ....
))
于 2013-08-28T12:57:45.137 回答