MYSQL クエリの結果から構築された連想配列があります。10 個の一意の「名前」と 19 個の一意の「display_name」(2B、3B、HR、RBI、HR など) で構成される 190 個のキーがあり、各「name」と「display_name」の組み合わせには「値」があります。
array (size=190)
0 =>
array (size=3)
'name' => string 'Name 1' (length=17)
'display_name' => string '2B' (length=2)
'value' => string '10' (length=2)
1 =>
array (size=3)
'name' => string 'Name 2' (length=20)
'display_name' => string '2B' (length=2)
'value' => string '7' (length=1)
2 =>
array (size=3)
'name' => string 'Name 3' (length=18)
'display_name' => string '2B' (length=2)
'value' => string '5' (length=1)
3 =>
array (size=3)
'name' => string 'Name 4' (length=19)
'display_name' => string '2B' (length=2)
'value' => string '3' (length=1)
4 =>
array (size=3)
'name' => string 'Name 5' (length=11)
'display_name' => string '2B' (length=2)
'value' => string '4' (length=1)
一意の「display_name」をキーとして、「名前」をキーとして、それに関連付けられた「値」を持つ配列を作成したいと思います。つまり、これを表として視覚化すると、現在は次のようになります。
name : display name : value
name1 2B 10
name2 2B 7
name3 2B 5
name4 2B 3
name5 2B 4
私はそれが次のようになりたい:
name : 2B : 3B : RBI : HR
name1 10 5 7 10
name2 8 6 5 9
name3 9 4 3 5
name4 2 1 1 1
name5 6 2 2 8
MYSQL でこれを実行できることはわかっていますが、PHP での解決策を知りたいです。私はさまざまなことを試し、参照しました(他の多くの中でも): PHPでの多次元配列の転置
MYSQL 同様のソリューション: MYSQL で行をヘッダーに転置する
私が得ることができる最も近いのはこれですが、$fieldHash['display_name'] 190個すべての値ではなく、一意の「display_name」値をキーとして取得します。
while ($arr = mysql_fetch_assoc($res)){
$row [] = $arr;
foreach($row as $resultArray){
foreach ( $resultArray as $key=>$val ){
$fieldHash[$key][] = $val;
}
}
}
この例では、データ モデルはわかっていますが、将来的には「display_name」の数に関係なく動的にしたいと考えています。
役立つ場合は、MYSQL クエリを次に示します。
$query = "SELECT teaminfo.name, league_stat_categories.display_name, team_points_season.value
FROM team_points_season, teaminfo, league_stat_categories
WHERE team_points_season.league_key = '$league_key' AND team_points_season.team_key = teaminfo.team_key AND team_points_season.league_key = league_stat_categories.league_key
AND team_points_season.stat_id = league_stat_categories.stat_id
GROUP BY league_stat_categories.display_name, team_points_season.team_key";
助けてくれてありがとう!