これまで、php で 1 対 1 の関係しか扱っていませんでしたが、1 対多の関係に関する問題に行き詰まっています。私はこれに数日間座っていましたが運が悪かったので、気が狂う前に誰かが介入して解決策を示してくれることを切望しています.
私のデータベースには一連の URL があり、さまざまなテーブルから、他のさまざまなフィールドとともに SELECT クエリによって受信されます。すべての URL には少なくとも 1 つのカテゴリが関連付けられていますが、複数のカテゴリを持つことができます。したがって、私の結果では、次のように見えるかもしれません。
link_id = 3 url= 'http://www.somesite1.com' category = 'uncategorised'
link_id = 4 url= 'http://www.somesite2.com' category = 'travel'
link_id = 4 url= 'http://www.somesite2.com' category = 'fun'
link_id = 4 url= 'http://www.somesite2.com' category = 'misc'
link_id = 3 url= 'http://www.somesite3.com' category = 'uncategorised'
私はこれを機能させました。while ループと mysql fetch 配列を使用して、ループして出力すると、結果は上記とまったく同じように見えます。それは素晴らしいですが、私が必要とするのは、次のようなものを読むことです:
link_id = 4 url = 'http://www.somesite2.com' category = 'travel fun misc'
そのため、基本的に各 URL のすべてのカテゴリが何らかの方法で結合され、出力されます。私の最初の試みで、入れ子になった while ループを試すようになりましたが、うまくいきませんでした。これが実現可能かどうかはわかりません。それとは別に、多次元配列が必要かどうか疑問に思っています(完全な推測ですが、これまで使用する必要はありませんでした)。
上記のように、これらの結果をリンク ID で並べ替えているので、現在のループ反復のリンク ID が最後の反復のリンク ID と一致するかどうかがわかります。その場合、複数のカテゴリを持つものがあります。とても近いのですが、よくわかりません。
何か案は?