「PHPの基礎 - 入出力」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「== 概要 == <br><br> == 出力 == ==== echo文 ==== <br> ==== print文 ==== <br> ==== 改行 ==== echo文およびprint文は、自動改行されない。<br> 改行を入れる場合は、以下に示すいずれかの方法を使用する必要がある。<br> <br> <syntaxhighlight lang="php"> // 改行文字を明示的に指定 echo "Hello\n"; print "World\n"; </syntaxhighlight> <br> <syntaxhighlight lang="php"> // HTMLの改行タグを使用 ech…」) |
(→改行) |
||
(同じ利用者による、間の6版が非表示) | |||
32行目: | 32行目: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
PHP_EOLは、ログファイル・テキストファイルへの出力、データベースへの保存での使用で推奨される。<br> | |||
<u>ただし、WebページとしてHTMLへ出力、メールテンプレート (HTML形式) へ出力する場合は、<nowiki><br></nowiki>を使用すべきである。</u><br> | |||
<br> | |||
* プラットフォーム独立性 | |||
*: PHP_EOLは、実行環境に応じて適切な改行コードを自動的に使用する。 | |||
*: Windows : \r\n | |||
*: UNIX/Linux : \n | |||
*: <br> | |||
* 移植性の向上 | |||
*: 異なるOS間でのファイル処理が容易になる。 | |||
<br> | |||
基本的に、最終的な出力形式に合わせて使い分ける。<br> | |||
もし混在させる必要がある場合は、<code>nl2br</code>関数を使用してPHP_EOLを<nowiki><br></nowiki>に変換することもできる。<br> | |||
<syntaxhighlight lang="php"> | |||
$text = "1行目" . PHP_EOL . "2行目"; | |||
echo nl2br($text); | |||
</syntaxhighlight> | |||
<br> | |||
==== 変数の展開 ==== | ==== 変数の展開 ==== | ||
変数の内容を展開して表示する場合、echo文とprint文にはいくつかの違いがある。<br> | 変数の内容を展開して表示する場合、echo文とprint文にはいくつかの違いがある。<br> | ||
77行目: | 96行目: | ||
* echo文は値を返さない。 | * echo文は値を返さない。 | ||
* echo文は複数の引数を受け付けられるため、変数を多数表示する必要がある場合はecho文の方が記述しやすく、可読性も高くなる。 | * echo文は複数の引数を受け付けられるため、変数を多数表示する必要がある場合はecho文の方が記述しやすく、可読性も高くなる。 | ||
<br> | |||
==== ヒアドキュメント ==== | |||
ヒアドキュメントを活用することにより、長い文字列やテンプレートを見やすく管理することができる。<br> | |||
<br> | |||
ヒアドキュメントの特徴を以下に示す。<br> | |||
* 開始識別子 (EOT等) の後には改行以外の文字を入れてはならない。 | |||
* 終了識別子は行頭になければならない。<br><u>ただし、PHP 7.3以降は可能</u> | |||
* 識別子は任意の文字列を使用可能。(EOT, EOD, HTML等) | |||
* <u><<<'EOT'</u> のように引用符で囲むとNowdocとなり、変数展開されない。 | |||
* PHP 7.3以降では終了識別子のインデントが可能。 | |||
* 文字列結合や関数の引数としても使用可能である。 | |||
<br> | |||
ヒアドキュメントが使用されるユースケースを以下に示す。<br> | |||
* HTMLテンプレート | |||
* SQLクエリ | |||
* メールテンプレート | |||
* JSONデータ | |||
* 設定ファイル | |||
<br> | |||
# ヒアドキュメントの構文 | |||
<<<(ID) | |||
<複数行にまたがる文字列> | |||
(ID); | |||
<br> | |||
<syntaxhighlight lang="php"> | |||
<?php | |||
// 基本的な使用方法 1 | |||
echo <<<DATA | |||
<!DOCTYPE html> | |||
<html lang="ja"> | |||
<head> | |||
<meta charset="utf-8"> | |||
<title>ヒアドキュメントの基礎</title> | |||
</head> | |||
<body> | |||
<header></header> | |||
<main> | |||
<h1>PHPをHTMLの中に埋め込む</h1> | |||
<p>ヒアドキュメントで出力したHTMLファイル</p> | |||
</main> | |||
<footer></footer> | |||
</body> | |||
</html> | |||
DATA; | |||
?> | |||
<?php | |||
// 基本的な使用方法 2 | |||
$name = "太郎"; | |||
$text = <<<EOT | |||
こんにちは、{$name}さん。 | |||
これはヒアドキュメントのサンプルである。 | |||
複数行の文字列を簡単に記述することができる。 | |||
EOT; | |||
?> | |||
<?php | |||
// Nowdocの例(変数展開されない) | |||
$text2 = <<<'EOD' | |||
こんにちは、{$name}さん。 | |||
この中では変数は展開されない。 | |||
そのまま {$name} と表示される。 | |||
EOD; | |||
?> | |||
<?php | |||
// インデントを保持する例 (PHP 7.3以降) | |||
$html = <<<HTML | |||
<div class="container"> | |||
<h1>タイトル</h1> | |||
<p>これは段落である。</p> | |||
</div> | |||
HTML; | |||
?> | |||
<?php | |||
// 関数の引数として直接使用 | |||
// json_encodeは関数である | |||
echo json_encode([ | |||
'description' => <<<JSON | |||
これは | |||
JSON形式の | |||
長い説明文である。 | |||
JSON, | |||
'title' => 'サンプル' | |||
]); | |||
?> | |||
<?php | |||
// メソッドチェーンでの使用 (PHP 7.3以降) | |||
$message = (new EmailMessage()) | |||
->setBody(<<<EMAIL | |||
お問い合わせありがとうございます。 | |||
以下の内容で承りました。 | |||
件名: {$subject} | |||
EMAIL) | |||
->setSubject('自動返信メール'); | |||
?> | |||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||
{{#seo: | |||
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki | |||
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 | |||
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux | |||
|image=/resources/assets/MochiuLogo_Single_Blue.png | |||
}} | |||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:Web]] | [[カテゴリ:Web]] |
2024年11月20日 (水) 13:31時点における最新版
概要
出力
echo文
print文
改行
echo文およびprint文は、自動改行されない。
改行を入れる場合は、以下に示すいずれかの方法を使用する必要がある。
// 改行文字を明示的に指定
echo "Hello\n";
print "World\n";
// HTMLの改行タグを使用
echo "Hello<br>";
print "World<br>";
// PHP_EOLの使用 (推奨)
echo "Hello" . PHP_EOL;
print "World" . PHP_EOL;
PHP_EOLは、ログファイル・テキストファイルへの出力、データベースへの保存での使用で推奨される。
ただし、WebページとしてHTMLへ出力、メールテンプレート (HTML形式) へ出力する場合は、<br>を使用すべきである。
- プラットフォーム独立性
- PHP_EOLは、実行環境に応じて適切な改行コードを自動的に使用する。
- Windows : \r\n
- UNIX/Linux : \n
- 移植性の向上
- 異なるOS間でのファイル処理が容易になる。
基本的に、最終的な出力形式に合わせて使い分ける。
もし混在させる必要がある場合は、nl2br
関数を使用してPHP_EOLを<br>に変換することもできる。
$text = "1行目" . PHP_EOL . "2行目";
echo nl2br($text);
変数の展開
変数の内容を展開して表示する場合、echo文とprint文にはいくつかの違いがある。
// 基本的な変数展開 (どちらも同じように動作)
$name = "田中";
echo "こんにちは、$nameさん"; // こんにちは、田中さん
print "こんにちは、$nameさん"; // こんにちは、田中さん
// 複数の変数を表示する場合
$first = "田中";
$last = "太郎";
// echo文は、カンマで区切って複数の引数を渡すことが可能
echo $first, " ", $last; // 田中 太郎
// print文は1つの引数しか受け付けないため連結が必要
print $first . " " . $last; // 田中 太郎
// 配列やオブジェクトのプロパティを展開する場合
$person = ["name" => "田中"];
// 波括弧を使用した複雑な展開(どちらも同じ)
echo "こんにちは、{$person['name']}さん";
print "こんにちは、{$person['name']}さん";
echo文とprint文の違い
print文の特徴
- print文は、値を1つしか出力できない。
- print文は、常に1を返す値を持つ。
- print文は値を返すため、わずかにechoより遅い。
ただし、通常の使用では実用的な差はほとんどない。
echo文の特徴
- echo文は、複数の値をカンマ区切りで出力できる。
- echo文は値を返さない。
- echo文は複数の引数を受け付けられるため、変数を多数表示する必要がある場合はecho文の方が記述しやすく、可読性も高くなる。
ヒアドキュメント
ヒアドキュメントを活用することにより、長い文字列やテンプレートを見やすく管理することができる。
ヒアドキュメントの特徴を以下に示す。
- 開始識別子 (EOT等) の後には改行以外の文字を入れてはならない。
- 終了識別子は行頭になければならない。
ただし、PHP 7.3以降は可能 - 識別子は任意の文字列を使用可能。(EOT, EOD, HTML等)
- <<<'EOT' のように引用符で囲むとNowdocとなり、変数展開されない。
- PHP 7.3以降では終了識別子のインデントが可能。
- 文字列結合や関数の引数としても使用可能である。
ヒアドキュメントが使用されるユースケースを以下に示す。
- HTMLテンプレート
- SQLクエリ
- メールテンプレート
- JSONデータ
- 設定ファイル
# ヒアドキュメントの構文 <<<(ID) <複数行にまたがる文字列> (ID);
<?php
// 基本的な使用方法 1
echo <<<DATA
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>ヒアドキュメントの基礎</title>
</head>
<body>
<header></header>
<main>
<h1>PHPをHTMLの中に埋め込む</h1>
<p>ヒアドキュメントで出力したHTMLファイル</p>
</main>
<footer></footer>
</body>
</html>
DATA;
?>
<?php
// 基本的な使用方法 2
$name = "太郎";
$text = <<<EOT
こんにちは、{$name}さん。
これはヒアドキュメントのサンプルである。
複数行の文字列を簡単に記述することができる。
EOT;
?>
<?php
// Nowdocの例(変数展開されない)
$text2 = <<<'EOD'
こんにちは、{$name}さん。
この中では変数は展開されない。
そのまま {$name} と表示される。
EOD;
?>
<?php
// インデントを保持する例 (PHP 7.3以降)
$html = <<<HTML
<div class="container">
<h1>タイトル</h1>
<p>これは段落である。</p>
</div>
HTML;
?>
<?php
// 関数の引数として直接使用
// json_encodeは関数である
echo json_encode([
'description' => <<<JSON
これは
JSON形式の
長い説明文である。
JSON,
'title' => 'サンプル'
]);
?>
<?php
// メソッドチェーンでの使用 (PHP 7.3以降)
$message = (new EmailMessage())
->setBody(<<<EMAIL
お問い合わせありがとうございます。
以下の内容で承りました。
件名: {$subject}
EMAIL)
->setSubject('自動返信メール');
?>