質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1186閲覧

for文の使い方について

YousukeTanaka

総合スコア79

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/04/08 05:56

PHPを学習している初心者です。
for文の理解を確認したく、質問する次第です。

以下のように、for文を使いながら都道府県のドロップダウンを作っています。

質問
①各行(select開始タグ、optionタグ、select終了タグ)ごとに変数$htmlがあるが、これはselectタグを使う場合は通常、各行で変数に入れていくものなのか?
②name="prefecture" の「\」を置く規則は何か? 調べてみると、文字列を囲む""と認識されないように、とあるが、どのように使えば良いのかがわからない。

<?php $PrefectureList = array( "北海道","青森県","岩手県","宮城県","秋田県", "山形県","福島県","茨城県","群馬県","栃木県", "埼玉県","千葉県","東京都","神奈川県","新潟県", "富山県","石川県","福井県","山梨県","長野県", "岐阜県","静岡県","愛知県","三重県","滋賀県", "京都府","大阪府","兵庫県","奈良県","和歌山県", "鳥取県","島根県","岡山県","広島県","山口県", "徳島県","香川県","愛媛県","高知県","福岡県", "佐賀県","長崎県","熊本県","大分県","宮崎県", "鹿児島県","沖縄県"); $html = "<SELECT name=\"prefecture\" >\n"; for ( $i = 0; $i <= count($PrefectureList) - 1 ; $i++) { $html .= "<OPTION value=\"$i\">$PrefectureList[$i]</OPTION>\n"; } $html .= "</SELECT>\n"; print $html; ?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

質問1:別に変数へ入れず、1行ごとにprintしていっても特に問題ありません。

質問2:""の中に別の"を書く場合、そこで文字列が終わりだと認識されないように、\"と書く必要があります。なお、HTMLは一重引用符でも書けるので、<select name='prefecture'>とすればエスケープは不要となります。

なお、SELECTOPTIONといったHTMLタグを大文字で書くのは、古い慣習に属します(HTML5 では全部小文字で書くのが主流です)。何かを参考にされているのでしたら、古い情報でないか確認することをおすすめします。

投稿2016/04/08 06:01

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YousukeTanaka

2016/04/08 06:03

大変わかりやすく、腑に落ちました。ありがとうございました。
guest

0

ベストアンサー

まず、質問内容はfor文のことではないですね。

①各行(select開始タグ、optionタグ、select終了タグ)ごとに変数$htmlがあるが、これはselectタグを使う場合は通常、各行で変数に入れていくものなのか?

コードをよく見てください。
最初の $html はそのあとにすぐ = が続いていますが、2回目以降は .= と ピリオドイコールになっています。
= は、変数に値を代入(入れ替え)で、.= は、連結を意味します。
例えば、次のようなコードの結果、変数 $a の中身は "ABC" になります。

PHP

1$a = "A"; 2$a .= "B"; 3$a .= "C";

質問にあるコードの場合、まず変数$htmlにHTML文を作成して、最後にprint文で出力していることになります。
やり方は人それぞれですが、変数$htmlに作成せずとも、都度出力してもよいです。

PHP

1print "<SELECT name=\"prefecture\" >\n";

②name="prefecture" の「\」を置く規則は何か? 調べてみると、文字列を囲む""と認識されないように、とあるが、どのように使えば良いのかがわからない。

調べた結果通りですね。
つまりPHPで文字列は、"~" で表されますが、途中にダブルクォーテーションが入ると正しく認識できなくなります。
"~"~" ← これはダメ
正しく認識させるために " の前に \ を入れる必要があります。
"~"~"
これをエスケープ処理といいます。

またPHPの場合、文字列はシングルクォーテーションで表すこともできます。
'~'
この場合はシングルクォーテーションで囲った中身がそのまま認識されます。
従って、
'~"~'
という書き方ができます。

詳しくはマニュアルを参照してみてください。
https://secure.php.net/manual/ja/language.types.string.php

投稿2016/04/08 06:16

ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YousukeTanaka

2016/04/08 06:21

非常にわかりやすく、マニュアルの添付までいただきありがとうございます。同じ疑問を繰り返さないように纏めて自分のライブラリに保存しておきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問