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

結果が次のようになるように、2 つのテーブルを結合するにはどうすればよいですか。

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

INNER JOIN / LEFT JOIN を使用してみましたが、これにより reid ごとに 2 つの行/配列が生成されます。上記のように、特定の fieldid のすべてのデータが同じ array 内に存在することを本当に望んでいます。

4

1 に答える 1

1

配列内に同じ名前のキーを 2 つ持つことはできません。あなたの例では、2つの「reid」があり、2番目のものは最初のものを上書きします。

これらの行を 1 つにマージするように 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 に答える