文字列型(string)

 状態:  閲覧数:6,322  投稿日:2011-03-08  更新日:  
■文字列には、3つの書き方がある。

1.引用符「'(シングルクォーテーション)」

2.二重引用符「"(ダブルクォーテーション)」

3.ヒアドキュメント構文



1.引用符「'(シングルクォーテーション)」

 
$narita = 'TEST1';
$haneda = 'TEST2';

echo 'hello, AIR';//普通の出力
echo '
';
echo 'hello, "AIR"';//文字列内にある二重引用符は、特別な意味を持つわけではないのでそのまま出力
echo '
';
echo 'hello, I\'m a AIR';//引用符で囲まれた文字列内に引用符を書くと、そこが文字列の終わりと解釈されてしまう、それを避けるために、引用符の前に「\(バックスラッシュ(OSの設定によっては、円マーク))」を付ける。すると、「\'」は、文字列の「'」として出力される。この機能を「エスケープ」と言い、「\」を、「エスケープシーケンス」と言う。
echo '
';
echo 'hello, \ AIR \\';//引用符で囲まれた文字列内に「\」を出力する際、「\」の後ろに特別な意味を持つ記号や文字が来なければ、そのまま記述すれば出力されるが、「\」の後ろに「'」が来る場合は、「\\」のように連続して書く。
echo '
';
echo 'hello, AIR \r\n Good Bye';//引用符の中では変数は展開されず、そのまま\r\nと出力される。ちなみに、「\r」は「改行(キャリッジリターン)」、「\n」は「改行(ラインフィールド)」という意味を持った「エスケープシーケンス」
echo '
';
echo 'hello, AIR $narita $haneda';//引用符の中では変数は展開されず、文字列としてそのまま出力される

▼結果

  /demo/string_singlequotation.html






2.二重引用符「"(ダブルクォーテーション)」

 
$narita = "TEST1";
$haneda = "TEST2";

echo "hello, AIR";
echo "
";
echo "hello, \"AIR\"";
echo "
";
echo "hello, I'm a AIR";
echo "
";
echo "hello, \ AIR \\";
echo "
";
echo "hello, AIR \r\n Good Bye";//ソース上で改行。ブラウザ上で改行とは異なる意
echo "
";
echo "hello, AIR $narita $haneda";//二重引用符内では、変数は展開される
echo "
";
echo "hello, AIR {$narita} {$haneda}";//文字列と変数名を明確に区別。推奨される書き方
echo "
";
echo "hello, AIR ${narita} ${haneda}";//文字列と変数名を明確に区別。推奨される書き方

▼結果

  /demo/string_doublequotation.html






3.ヒアドキュメント構文

ヒアドキュメント(<<<)を使用すると、開始記号と終了記号の間に、複数行の文字を記述した場合、記述したとおりにプログラム処理を解釈してくれる。

ただし、開始の文字と終了の文字が同じである必要がある。



ちなみに、サンプルソースに記述してある「EOT」という文字列は、半角英語であれば、OK。
例えば、「EOL」など。※「END ONF LINE」=行末の意味。



なお、終了のEOTの文字列の存在する行にはEOT以外には何も記述してはいけない。EOFの左側にスペースやタブ等を記述してもエラーとなる。



長所:

・「"(ダブルクォート)」で囲まずに長文を書けるので、内部で「"(ダブルクォート)」が使える

 (HTML書くのに便利なのは特にこの点。複雑なSQLを書くときに利用されることもある)

・ヒアドキュメント内部で変数の展開はされる。{}で囲む。例{$hoge}



短所:

・「EOL;」のような終わりを示す文字列を必ず行頭に書かなければならない

 (インデントをきちんと書いているソースだとこれのせいで読みにくくなる)

・ヒアドキュメントの中でifやwhileなどのプログラムは書けない。これは、"(ダブルクォート)」で囲んだ文字列の中で変数展開はされるものの
ifやwhileなどのプログラムは書けない、ことと、同じ理屈に因るもの。








//変数に格納してから出力
$hode = <<< EOT
<em>NARITA 1</em>

<em>HANEDA 2</em>



EOT;

echo $hode;

//直接出力
echo <<< EOT
<em>NARITA 1</em>

<em>HANEDA 2</em>

EOT;

▽PHPのヒアドキュメント / 【超初心者のホームページ作成】

  http://beginners.atompro.net/faqphp_heardoc.html







その他.文字列の文字単位(バイト単位)でのアクセス



「{ }(中括弧、波括弧)」を利用して、文字列中の単一文字にアクセスすることが可能

 
$air = "abcdefghijklmnopqrstuvwxyz";//変数へ文字列を格納

echo $air;
echo "
";
echo $air{0};//「その文字列の先頭から何バイト目の文字か」を、整数値で指定
echo "
";
echo $air{10};
echo "
";

$air{25} = "A";//「先頭から25バイト目の文字z」部分に、Aを格納

echo $air;




mixed

コメント投稿(ログインが必要)



類似度ページランキング
順位 ページタイトル抜粋
1 文字列型(string) 100
2 整数型(integer) 67
3 switch文 42
4 Doctrine 40
5 session_start() 37
6 Generators 36
7 register_globals 36
8 isset 35
9 $this 35
10 session_destroy関数 34
11 syntax error 33
12 or(||) 33
13 SessionHandler::gc 33
14 register_shutdown_function 32
15 ob_start 30
16 session.gc_maxlifetime 29
17 static修飾子 29
18 set_error_handler 28
19 ErrorExceptionクラス 28
20 preg_match 27
2024/4/20 19:50 更新
週間人気ページランキング / 4-13 → 4-19
順位 ページタイトル抜粋 アクセス数
1 ブラウザを閉じたらセッションデータはどうなるの? | セッション 15
2 Parse error: syntax error, unexpected 'public' (T_PUBLIC) | Parse error(エラーメッセージ) 6
3 curl で Cookie を使用する 5
3 PHPで定数を定義する方法は2種類ある / 配列定数の定義 5
3 コード例 … 「例外処理」はネストすることができる 5
4 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in ○○.php on line △△ | Warning(エラーメッセージ) 4
5 PHP用語 3
5 インターフェイス | クラスとオブジェクト 3
5 型の種類 | 型 3
5 php-devel とは? 3
6 セッション管理が必要な理由は、HTTPプロトコルには状態を保持する機能がないため | セッション 2
6 Fatal error: Uncaught Error: Call to a member function modify() on string | Fatal error(エラーメッセージ) 2
6 エラー出力レベル設定 | エラー設定(エラーメッセージ) 2
6 Fatal error: Access level to ▲::$△ must be protected (as in class ●) or weaker | Fatal error(エラーメッセージ) 2
6 プログラムの基本三構造 | 制御構造 2
6 Cookie / Cookieとは? / Cookie仕様 2
6 ブラウザを閉じたらセッションデータはどうなるの? | セッション 2
6 実際に遭遇した例 2
6 array_filter | 配列 2
6 foreach文 | 制御構造 2
2024/4/20 1:01 更新