次の問題を解決しようとしています。
私はプログラミングとPHPに慣れていないことに注意してくださいSAMS PHP, MySQL and Apache (Julie C. Meloni).
多次元配列を作成する演習があります。外側の配列は、映画のジャンルをリストする連想配列です。ジャンル配列は、そのジャンルの映画をリストします。次に、ジャンルのリストとそのジャンルに関連付けられた映画のリストを印刷するよう求められます。
私のコード:
<?php
$genres = array(
'Science Fiction' => array('Star Trek', 'Star Wars', 'Alien'),
'Drama' => array('Les Amant de Pont Neuf', 'War & Peace', 'Bridehead Revisited'),
'Crime' => array('Heat', 'Pulp Fiction', 'Messerine')
);
$gKeys = array_keys($genres);
foreach ($gKeys as $genre) {
print $genre."<br/>";
}
?>
これは機能し、次のように出力されます。
SF
ドラマ
犯罪
ここで壁にぶち当たります。後に別の foreach ループを追加しようとすると
print $genre;
結果はブラウザーに表示されません (最初のループの結果を除く)。私はすべてを試しました。例えば:
- $genre に適用された array_value() 関数を使用して開始し、返された配列に対して foreach を試行します。
- 教科書には while (list($x) = ($y)) メカニズムも記載されています。
- 私はアレイの章を徹底的に読み直しましたが、他の場所を見ても役に立ちませんでした。
おそらく、多次元配列の構造が間違っているのでしょうか? 一貫性のためにも、2 次元配列は連想配列である必要がありますか?