• ベストアンサー

PHPコードの読解お願いいたします

PHP初心者です。 環境→XAMPP1.7.0でアパッチなど一括ダウンロード OSはヴィスタ 以下コード中分からない点がありますので、ご指導よろしくお願いいたします。(細かい点は省略しています) なお●の部分が分からない点です。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <?php $city=array("東京""大阪""名古屋""神奈川") ?> <h2>出発地のご案内</h2> <form> <select name="city"> <?php foreach($city as $name=>$value){  ● print "<option value={$value}>{$value}</option> } ?> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ●・・foreach内の$nameと$valueの変数はそれぞれ何を表わしているのでしょうか。 私の教科書的理解で申しますと、$nameはキー用の変数を表わし、$valueは値用の変数を表すものだと思っております。 そこから考えると、$cityに格納されている”東京"、"大阪"、"名古屋"、"神奈川”それぞれの文字列はキー用の$nameに格納される、なら残った$valueには何が入るのでしょうか。 そもそもforeach($配列名 as $キー用の変数=>$値用の変数)という記載の仕方ができるのは、事前に配列にて 例えば$配列名=array("キー0"=>値0、"キー1"=>値1・・) といった記載がされている場合に有効なのではないかと思うのですが。 繰り返しますが、おそらく$cityに格納されているそれぞれの文字列がキー変数を表わす"$name"に代入されると思うのですが、それでは値用の変数$valueにはいったい何が格納されるといういうのでしょうか。 どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

>$city=array("東京""大阪""名古屋""神奈川") $city=array("東京","大阪","名古屋","神奈川"); のことですか? >print "<option value={$value}>{$value}</option> print "<option value={$value}>{$value}</option>"; のことですか? カンマやセミコロンなどが不足していて、提示されたスクリプトを そのまま貼り付けただけでは実行できません。 お手元にあるスクリプトが正しく実行できているのでしたら、 それを「そっくりそのまま、何も手を加えずに」貼り付けてくださるようお願いいたします。 >$city=array("東京","大阪","名古屋","神奈川"); >foreach($city as $name=>$value){ 今回の場合、配列$cityは連想配列ではありません。したがいまして、 上記のforeachの形式を採ることは無意味です。実際、 >print "<option value={$value}>{$value}</option> $nameはどこにも登場していません。 foreach($city as $value){ でじゅうぶんです。

--w--
質問者

お礼

御回答いただきありがとうございました!

その他の回答 (1)

  • mogmet
  • ベストアンサー率50% (1/2)
回答No.1

結論からいうと$nameは要素(配列のキー)、$valueは値用の変数を表します。 phpでは特に指定をしなければ配列の要素は0,1,2,...と自動的に入っていきます。 例えば、$a1 = array("あいう","かきく","さしす"); という宣言が合った場合、 a1[0] = "あいう" a1[1] = "かきく" a1[2] = "さしす" という風に値を呼び出すことが出来ます。 また、phpには連想配列というものがあり、質問文のように $a1 = array("キー0"=>値0、"キー1"=>値1・・) と設定すると a1["キー0"] = 値0 a1["キー1"] = 値1 という風に指定した要素で値を呼び出すことが出来ます。 なので今回の$city=array("東京""大阪""名古屋""神奈川")の場合ですと、 $keyには0,1,2,3と値が入っていき、 $value には東京、大阪、名古屋、神奈川と値が入っていく形になります。 参考URLも見ていただければ私の下手な説明よりも分かりやすいかと思います(笑)

参考URL:
http://ww7.tiki.ne.jp/~inabah/php/002_011.htm
--w--
質問者

お礼

御回答いただきありがとうございました。

関連するQ&A

専門家に質問してみよう