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

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

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

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

Q&A

解決済

4回答

1701閲覧

PHPのソースについて質問です。

ai5

総合スコア40

PHP

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

0グッド

1クリップ

投稿2016/08/22 15:22

編集2016/08/22 16:24
<!-- for文を用いて6歳から100歳までをoptionで選べるようにしましょう -->

という問題があるのですが、なぜ、下記ソースのように'{$i}'>{$i}のような形になるのでしょうか?
valueが'{$i}'だとして、{$i}より小さいという意味がわからないです。

また、多数展開のecho "<option value = '1'>1</option>"変数展開も
どのような構造かよくわかりません。
詳しい方ご教授お願いします。

php

1 <?php 2 for ($i = 6; $i <= 100; $i++) { 3 echo "<option value='{$i}'>{$i}</option>"; 4 } 5 ?>

改行どうすればできますか?

php

1echo "<option value = '1'>1</option>"変数展開

コードブロックこれでいいんですかね

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

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

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

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

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

matobaa

2016/08/22 15:30 編集

興味深い。なぜそう解釈したのだろう。なぜ自分はもうそう解釈することはできないんだろう。どう説明すればいいんだろう。こうです、ということは簡単なんだけど。
kei344

2016/08/22 15:27

コードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
kei344

2016/08/22 16:02 編集

編集ありがとうございます。最初の「```」部分を「```php」+改行にしていただくとさらに良いです。 記入エリアの右部分あたりにリアルタイムに結果が表示されていると思うので、そこを見ながら調整してください。
kei344

2016/08/22 16:08

すいません、難しいことを言い過ぎたようです。「<br/> 」と「php」は削除しておいてください。
退会済みユーザー

退会済みユーザー

2016/08/22 17:38

> matobaa さん IDEのせいかとw
guest

回答4

0

どこまで質問者さんが理解できているのか分かりませんが・・・

先ずHTMLの記述ルールは知っていますでしょうか?

HTMLでは基本的に開始タグと終了タグのペアで1つの構成要素を表します。

例を1つ挙げると以下のイメージです。

HTML

1<b>タグで囲まれたこの文字列は太文字で表示されるよっ!</b>

この例と提示したソースでは似ている箇所があると思います。
それに気づいたら現在の誤解もなくなると思いますよ。
(ちなみに<b>のタグは**bold(太字)**を表します。)

投稿2016/08/22 16:05

編集2016/08/22 16:08
Panzer_vor

総合スコア1636

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

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

ai5

2016/08/22 16:20

はい、HTMLの記述ルールはわかります。 <option value='{$i}'>{$i}</option> これはオプションタグを使っているのに、valueの変数?に'{$i}'>{$i}が 使われてるのがよくわからないです。
Panzer_vor

2016/08/22 16:32

> ai5さん 文字列中の$iが、変数中の値に置き換わるのは分かりますよね? そうすると$iが6の場合に最終的に完成する文字列は以下となります。 <option value = '6'>6</option> HTMLで見慣れた記述ルールですよね? 「>」は不等号とかではなく、 HTMLのタグの一部です。
ai5

2016/08/22 17:15

はい、不等号と見間違えていました。
Panzer_vor

2016/08/22 17:35

> ai5さん その誤解が解ければ後はforループの話となります。 6から開始し$iが100までの間は、 数値箇所だけを差し替えてひたすらechoでHTMLのoption要素を吐き出すといったことをしています。
guest

0

echoは文字列を出力する命令です。

php

1<?php 2echo "文字列"; // 文字列

phpでは、変数を自動的に展開してくれる機能があります

php

1<?php 2$i=1; 3echo "文字列$i"; // 文字列1

しかし以下の様な文字列だと、いったいどこまでが変数名なのかわかりません。
(一番長くマッチしたのが出力されるようです)

php

1<?php 2$i=1; 3$ii=2; // 本当はこれを使いたい 4$iii=3; 5echo "文字列$iii"; // 文字列3 (一番長くマッチした $iii が使われた) 6echo "文字列$iiii"; // どれかわからないのでエラー 7echo "文字列$ii ii"; // 文字列2 ii (スペースで区切られたので一番長い $iiが使われた)

なので、どこが変数名なのかを明示するために { } を使います

php

1<?php 2$i=1; 3$ii=2; 4$iii=3; 5echo "文字列{$ii}i"; // 文字列2i 6echo "文字列{$ii}ii"; // 文字列2ii

変数や特殊記号(変数を表すために使う記号や、変数を含む{``}など)以外はただの文字列として扱われます。

php

1<?php 2$i=1; 3echo "abcdefghi{$i}ABCDEFGHI{$i}[]?*+"; // abcdefghi1ABCDEFGHI1[]?*+

すぐ上の例でもいくつか出てきましたが、それは通常演算に使われる記号でも同じです。

php

1<?php 2echo "<>!=#%&'("; // <>!=#%&'(

という事で、
echo "<option value='{$i}'>{$i}</option>";
に含まれる',<,>などの記号もただの文字で比較や計算の記号ではありません。

※ 文字列中に $"そのものを文字として出力するための エスケープ文字というのがありますがそれは割愛しました。

投稿2016/08/22 16:07

flied_onion

総合スコア2604

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

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

ai5

2016/08/22 16:17

ご回答ありがとうございます。 <!-- for文を用いて6歳から100歳までをoptionで選べるようにしましょう --> という問題に対してecho "<option value='{$i}'>{$i}</option>";がどのように関わっているかよくわからないです。 echoで<option value='{$i}'>{$i}</option>という文字列を出力しているのはわかります。 しかし、なんで{$i}があるのに、'{$i}'は' 'に囲まれていたりするのかがわかりません。
flied_onion

2016/08/22 16:23

{$i} 以外は文字です。phpとは関係ありません。それを忘れないでください。 最終的にそういう文字列を(HTMLとして)出したいだけです。それ以上でもそれ以下でもありません。 たとえば6歳から10歳まで並べるとしたらどう書きますか? 4つoptionをechoしますか?少なければそれでもいいでしょう。 しかしほぼ同じことを繰り返してますよね?for文を使うとうまく書けるという問題です。 繰り返しとfor文の関連性がわからないのであれば、for文を学びなおしてくださいとしか言えません。
ai5

2016/08/22 16:31

<?php for ($i = 6; $i <= 10; $i++) { // echo "<option value='{$i}'>{$i}</option>"; この部分がよくわからないです。4つoptionをechoしますか?というのはどのようにソースで表現できますか? } ?> echo <option value='6'>6</option> という認識で合ってますか?
flied_onion

2016/08/22 16:33

このプログラムはphpを使って、HTML用の文字列を作る(echoする)作業です。 echoはHTMLではありません。 phpのプログラムが動いた結果、HTMLのテキストが手に入るようにしたいのです。 そのあたりを切り分けて考えてみてください。
flied_onion

2016/08/22 16:35

echo <option value='6'>6</option> はどういう結果になるとおもいますか?
ai5

2016/08/22 16:39

6というオプションがechoされると思います ただ問題は6~100までを選ぶので、95個のオプションがないといけないのでは??
flied_onion

2016/08/22 16:53

引用符が無い( echo "<option value='6'>6</option>" )けど、たぶん思っていることはあっているでしょう。 ブラウザで見ると、6というオプションがechoされます。 それは、 <option value='6'>6</option> というオプションを「phpで(echoして)」作ってあげているからです。 そうです。問題は95個ないといけません。6歳から10歳の話で4つ echoしますか?というのはそういうことです。(5つでした。恥ずかしい) echo "<option value='6'>6</option>" echo "<option value='7'>7</option>" echo "<option value='8'>8</option>" echo "<option value='9'>9</option>" echo "<option value='10'>10</option>" これ95回やりますか?大変ですよね。 だから、繰り返し(for文)と変数($i )を使ってうまいことphpを操りましょうというのがこの問題です。6~10のコメントの回答を見るに、for文自体は思いつくようですので、 $i をうまく使っていることに気づけばよさそうな気がします。
flied_onion

2016/08/22 16:54

すいませんが、今夜はこの辺で・・・。
ai5

2016/08/22 17:14

for ($i = 6; $i <= 100; $i++)で繰り返した数字を "<option value='{$i}'>{$i}</option>"で6~100以下のオプションをecho しているという認識で合ってますか?
ai5

2016/08/22 17:14

夜分遅くまでありがとうございました。 もう少しでわかりそうな気がします。 また、明日お願いします。
flied_onion

2016/08/22 22:57

その認識であっています。 echo "{$i}"; だと、オプションではなく、ただの 6〜100がechoされます。
guest

0

ややこしいことを抜きにしてこういう風に書けば分かりやすいのかなあと思いました。

PHP

1<?php for ($i = 6; $i <= 100; $i++) { ?> 2<option value="<?php echo $i;?>"><?php echo $i;?></option> 3<?php } // for end ?>

PHP5.4.0以降もしくはショートタグがOnであれば

PHP

1<?php for ($i = 6; $i <= 100; $i++) { ?> 2<option value="<?=$i?>"><?=$i?></option> 3<?php } // for end ?>

こうもかけます。

投稿2016/08/23 00:10

Yasha_Wedyue

総合スコア830

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

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

0

ベストアンサー

このあたりを読んでみてください。似たコードも載っています。

【PHPのfor文で繰り返し処理(HTML埋め込みでもスッキリな書き方も)】
http://www.flatflag.nir87.com/for-273

投稿2016/08/22 16:29

kei344

総合スコア69366

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問