質問: 授業の課題で、 三つの文字列を連想配列に代入し、foreach文で表示したものをwhile文で実現させる というものがありました。 これはwhile文を回すために新しく変数を作るということでしょうか? 調べたり教科書を見たりしていますが、発想力が乏しいもので... while文で作るヒントを教えてください。 よろしくお願いします。 --- (追記) ヒントなのか正解なのか紛らわしい表現になってしまいすみません。 できれば答えを知りたいのですが、ヒントをみて自分で書けるものなら書きたかったので答えもヒントも求めているような文になってしまいました。 foreach文のものは以下です。 ``` "りんご", "banana" => "バナナ", "suika" => "スイカ"); foreach($data as $test) { print $data; } ?> ``` よろしくお願いします。
回答: ``` $array = Array('tokyo' => '東京', 'kyoto' => '京都', 'osaka' => '大阪'); foreach($array as $key => $value){ print $key . ':' . $value . PHP_EOL; } ``` 上記のような`foreach`を`while`に以下のように書き直すことができます。 ``` #foreach に続けてwhileで表示する場合にはresetが必要 #reset($array); while (list($key, $value) = each($array)) { print $key . ':' . $value . PHP_EOL; } ``` 他の方法で ``` while ($value = current($array)) { print key($array) . ':' . $value . PHP_EOL; next($array); } ``` のようにもできます。(さらに他の方法もあるかと思いますが) キーと値の両方が必要かどうかわからなかったので両方使う例(foreachも)書いてみました。