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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

3121閲覧

php for文内の変数展開”と’の違いがわからないです。

Akaho

総合スコア39

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2019/06/08 12:16

編集2019/06/09 06:05

progateのphp1学習コースをやっています。
課題内容はお問い合わせフォームを作ることを目指したものです。
繰り返し処理と変数展開を用いて多数のoptionタグを作る課題です。
年齢のselectタグで囲まれているoptionタグに, for文を利用して 変数展開するところで理解できない部分があるので解説してほしいです。
〜その部分〜
変数展開を用いる際はダブルクォーテーションで囲むことは理解しています。
ただ、"{$i}"がhtmlでの本来の形だから、これでいいと思うのですが、正解は'{$i}'です。なぜダメのかわからないです。
調べて見ましたが、理解できる答えが見つかりませんでした。リンク内容
教えてください。

php

1コード 2<div class="form-item">年齢</div> 3 <select name="age"> 4 <option value="未選択">選択してください</option> 5 <!-- for文を用いて6歳から100歳までをoptionで選べるようにしましょう --> 6 <?php 7 for($i=6;$<=100;$i++){ 8 echo "<option value="{$i}">{$i}</option>"; 9 } 10 ?> 11 </select>

  

イメージ説明

html

1コード 2<!DOCTYPE html> 3<html> 4<head> 5 <meta charset="utf-8"> 6 <title>Progate</title> 7 <link rel="stylesheet" type="text/css" href="stylesheet.css"> 8</head> 9<body> 10 <div class="header"> 11 <div class="header-left">Progate</div> 12 <div class="header-right"> 13 <ul> 14 <li>会社概要</li> 15 <li>採用</li> 16 <li class="selected">お問い合わせ</li> 17 </ul> 18 </div> 19 </div> 20 21 <div class="main"> 22 <div class="contact-form"> 23 <div class="form-title">お問い合わせ</div> 24 <form method="post" action="sent.php"> 25 <div class="form-item">名前</div> 26 <input type="text" name="name"> 27 28 <div class="form-item">年齢</div> 29 <select name="age"> 30 <option value="未選択">選択してください</option> 31 <!-- for文を用いて6歳から100歳までをoptionで選べるようにしましょう --> 32 <?php 33 for($i=6;$<=100;$i++){ 34 echo "<option value="{$i}">{$i}</option>"; 35 } 36 ?> 37 </select> 38 39 <div class="form-item">お問い合わせの種類</div> 40 <?php 41 $types = array('Progateに関するお問い合わせ', 'Progateに対する意見', '採用に関するお問い合わせ', '取材・メディア関連のお問い合わせ', '料金に関するお問い合わせ', 'その他'); 42 ?> 43 <!-- この下にselectタグを書いていきましょう --> 44 45 46 <div class="form-item">内容</div> 47 <textarea name="body"></textarea> 48 49 <input type="submit" value="送信"> 50 </form> 51 </div> 52 </div> 53 54 <div class="footer"> 55 <div class="footer-left"> 56 <ul> 57 <li>会社概要</li> 58 <li>採用</li> 59 <li>お問い合わせ</li> 60 </ul> 61 </div> 62 <div class="like-box"> 63 <iframe src="https://www.facebook.com/plugins/likebox.php?href=https%3A%2F%2Fwww.facebook.com%2Fpages%2FProgate%2F742679992421539&amp;show_faces=false" scrolling="no" frameborder="0" style="border:none; overflow:hidden; height:300px;" allowTransparency="true"></iframe> 64 </div> 65 </div> 66</body> 67</html>

追記
〜回答を得て〜
エスケープを初めて知った。
調べて見た。¥でエスケープもできるんだと知った。
そういうエスケープ処理を自動化してくれる関数も新たに知った。以下
addslashes関数やvar_export関数
また、変数に代入する時点で”と’を使っておけばいいということも知った。
エスケープシーケンスと変数を展開してくれるヒアドキュメント、その逆で展開されないNowdoc(Newdoc)も知った。
リンク内容
リンク内容
リンク内容
リンク内容
リンク内容

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

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

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

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

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

guest

回答2

0

ベストアンサー

シングルクォートなりダブルクォートは特別な意味を持ちます。
主には「囲われた中は文字列だよ」と示すためのものですが、HTMLを出力したい場合、HTMLにもダブルクォート、シングルクォートの概念がありますので、あくまで「HTML文字列としてのクォート」を出力したい場合は「エスケープシーケンス」を利用する必要があります。

php

1echo "<option value=\"{$i}\">{$i}</option>";

これは「PHPの文字列出力時に囲ったクォートと同じクォートを文字列として扱いたい場合」に有効なものなので、ダブルクォートで囲った場合のシングルクォートとか、シングルクォートで囲った場合のダブルクォートとかはエスケープの必要がありません。

php

1echo "<option value='{$i}'>{$i}</option>"; 2 3echo '<option value="'.$i.'">'.$i.'</option>'; 4 5//これはエスケープ必要 6echo '<option value=\''.$i.'\'>'.$i.'</option>';

まどろっこしければヒアドキュメントを利用するのも手です。※複数行のときは見やすいですが単行の場合はあまり好まれないようです

php

1echo <<<HTML 2<option value="{$i}">{$i}</option> 3HTML;

投稿2019/06/08 12:45

m.ts10806

総合スコア80850

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

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

Akaho

2019/06/09 05:41

特殊な文字列を出力させるためのいろんな方法を教えて下さってありがとうございました。 勉強になりました。
m.ts10806

2019/06/09 05:52

解決されたようで何よりです。 ブラウザから実行した場合の画面的な見た目は同じですが、コード的にはいずれかに統一した方が見やすくなるので、そこは自分が見やすいと思うやり方で通すようにしてください
guest

0

ダブルクオートの中でダブルクオートを使うなら少し工夫が必要です。

自分ならこう書きますけどね。

php

1echo '<option value="'.$i.'">'.$i.'</option>';

投稿2019/06/08 12:27

編集2019/06/08 12:28
takasima20

総合スコア7458

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

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

Akaho

2019/06/09 06:06

ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問