「PHPの基礎 - 入出力」の版間の差分

提供: MochiuWiki : SUSE, EC, PCB

文字列「__FORCETOC__」を「{{#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 pag…
77行目: 77行目:
* 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>
<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>



2024年11月5日 (火) 11:21時点における版

概要



出力

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;


変数の展開

変数の内容を展開して表示する場合、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データ
  • 設定ファイル


 <?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('自動返信メール');
 ?>