PDO を使用して列の値でグループ化された連想配列を取得する
データベース操作では、特定の形式で編成されたデータを取得することが必要になることがよくあります。そのような形式の 1 つは、特定の列の値によってグループ化された連想配列です。これにより、指定された列に基づいてデータに簡単にアクセスできるようになります。ここでは、PDO を使用してこれを達成する方法について説明します。
問題: 次のデータを含むテーブルがあるとします:
name | age | sex | position |
---|---|---|---|
Antony | 34 | M | programmer |
Sally | 30 | F | manager |
Matthew | 28 | M | designer |
目標:次の形式でデータをフェッチします:
Array ( [Antony] => Array ( [age] => 34 [sex] => M [position] => programmer ) [Sally] => Array ( [age] => 30 [sex] => F [position] => manager ) [Matthew] => Array ( [age] => 28 [sex] => M [position] => designer ) )
解決策: これを実現するには、次のモードで PDO の fetchAll メソッドを使用できます:
$pdo->query('SELECT * FROM employee')->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_UNIQUE);
FETCH_GROUP モードは、最初の列の値によって結果をグループ化します。 FETCH_UNIQUE モードでは、グループ化列の一意の値ごとに結果が 1 行に制限されます。その結果、列の値がキーとして機能し、残りの列が値として機能する連想配列が得られます。
出力例:
Array ( [Antony] => Array ( [0] => (age: 34, sex: M, position: programmer) ) [Sally] => Array ( [0] => (age: 30, sex: F, position: manager) ) [Matthew] => Array ( [0] => (age: 28, sex: M, position: designer) ) )
出力には、グループごとに 1 行の配列が含まれます。これは、FETCH_UNIQUE モードにより各グループの最初の行のみが確実に取得されるためです。
以上がPDO を使用して列の値でグループ化された連想配列を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。