PHPのechoの使い方とHTMLと変数・関数を一緒に出力する方法。

WordPressのファイルやサイトなどで紹介されているコードを見ると、よく「echo」という文字を見ませんか?

echo自体はそれほど難しいものではなく、ただ、「文字列を出力する」ものなんですが、問題は、HTMLと変数・関数を一緒に出力する場合です。

というのも、WordPressはPHPというプログラミング言語で動くCMSですが、HTMLとCSS(とjavascript)のコードを書くことが多いので、「ん?echoってなんぞや?」となるわけです。

ただ、最近、オリジナルテーマを自作する上で、このechoとの上手い付き合い方がわかってきました。

そこで今回は、「うわ、echoってやつ出てきた…もういいや」となっている方向けに詳しく解説します。

echoの基本的な使い方

まず、echoの基本的な形を見てみましょう。

変数や関数を出力する場合

echo 〇〇;

意味は、「〇〇を出力する」です。

サンプルコード

$aisatsu = '私はBABYMETALファンです。'; //変数aisatsuに「私はBABYMETALファンです。」という文字列を入れる 
echo $aisatsu; 
//出力結果 私はBABYMETALファンです。

文字列を出力する場合

echo '〇〇';

文字列を出力する場合は、シングルクォーテーション(”)で囲むだけです。

ポイントは、シングルクォーテーションで囲まれた部分がそのまま出力されること。後述しますが、変数や関数などもそのまま文字列として出力されます。

サンプルコード

echo 'はじめまして。BABYMETALです。';
//出力結果 はじめまして。BABYMETALです。

ダブルクォーテーションよりもシングルクォーテーション

ちなみに、

echo "";

と、ダブルクォーテーション(””)で囲む形でもOKですが、

<div class="test">

などの””と共存するために\をつける必要があり、理解しづらいと思うので、シングルクォーテーション(”)を使うことをおすすめします。

変数・関数と文字列を一緒に出力する

さて、ここからが本題です。echo自体は難なく理解できるはずですが、実際に使うとなると、中には理解しづらいケースもあると思います。

例えば、下記のコード。

$name = 'BABYMETAL'; // 変数nameに「BABYMETAL」を入れる
echo '私は$nameファンです。';

この出力結果は、「私はBABYMETALファンです。」ではなく、「私は$nameファンです。」となります。

なぜなら、変数(や関数)がただの文字列として出力されるため、変数が使えないからです。

では、一体どうすればいいのかというと、話は簡単です。

先述の通り、

  • 変数や関数を出力する場合は記号なし
  • 文字列を出力する場合はシングルクォーテーションで囲む

というルールがあるので、「文字列と変数・関数を別々に出力」すればいいだけです。

具体例

$name = 'BABYMETAL'; // 変数nameに「BABYMETAL」を入れる
echo '私は'$name'ファンです。';

コードを見ると、

  1. 「私は」を文字列として出力(シングルクォーテーションで囲む)
  2. $nameを変数として出力(記号なし)
  3. 「ファンです」を文字列として出力(シングルクォーテーションで囲む)

という形になっているのがわかるはずです。

文字列と変数・関数の間にはピリオドが必要

ただ、ここで1つ問題が。実は、上記のコードだとエラー になってしまいます。文字列は文字列で、変数は変数で出力されるはずなのに。

これを防ぐためには、「文字列」と「変数(や関数)」の間にピリオドをつければOKです。

なぜ、ピリオドなのかという具体的な解説はできませんが、ピリオドが「隣同士を連結させる役割」を果たします。

具体例

下記が正しいコードです。

$name = 'BABYMETAL'; // 変数nameに「BABYMETAL」を入れる
echo '私は'.$name.'ファンです。';
//出力結果 私はBABYMETALファンです。

当初、変数や関数を’.〇〇.’という形で囲むと勘違いしていたのは内緒の話です。

カンマでもOK

先ほどのシングルクォーテーション、ダブルクォーテーションの話と同じく、ピリオドではなくカンマを使ってもOKです。(これに関しては、本当にどちらでもいいです)

変数・関数とHTMLを一緒に出力する

変数・関数と文字列を一緒に出力する仕組みを理解できれば、HTMLと一緒に出力する仕組みも理解できたということになります。

なぜなら、HTMLはマークアップ言語なので、プログラミング言語のPHPと違い、ファイルには普通のテキストのように書くからです。

つまり、

<p>私はBABYMETALファンです。</p>

というコードを書く場合は、そのままシングルクォーテーション(”)で囲むだけでOKです。

echo '<p>私はBABYMETALファンです</p>';

出力結果は<p>私はBABYMETALファンです</p>になりますが、それがファイルで読み込まれて出力される場合にHTMLコードとして出力されるという仕組みです。

そして、変数(や関数)と一緒に出力する場合も同じです。

$name = 'BABYMETAL'; // 変数nameに「BABYMETAL」を入れる
echo '<p>私は'.$name.'ファンです</p>';

$keywords = 'BABYMETAL'; // 変数keywordsに「BABYMETAL」を入れる
echo '<meta name="keywords" content="'.$keywords.'">';

HTMLコードをechoで出力する時の考え方

もしかすると、「じゃあ、全部のHTMLコードをechoで呼び出せばいいんじゃないの?」と思う方もいるかもしれませんが、それはケースバイケースです。

変数や関数を多用しているなら、すべてのコードをechoで出力した方が楽ですし、ほぼHTMLコードなら、一部だけechoで出力した方が楽です。

こんな感じで。

<a href="<?php echo home_url(); ?>/">MORIAWASE</a>

ここら辺は、

  • 管理が楽かどうか
  • 見やすいかどうか

などを意識して使い分ければいいので、そこまで難しく考えなくても大丈夫です。

以上、ご参考までに!(`・ω・´)ゞ

キャリアアップ 給料が安い?残業が多い?仕事を辞めたい20代の転職ハック。

キャリアアップ ブラックな求人広告を見分けてホワイト企業に応募する方法。

キャリアアップ 転職サイト・転職エージェント・ハローワーク、おすすめは?

この記事が良かったらいいね!最新情報が届きます!

この記事を書いた人 :

WEBメディア「MORIAWASE」の運営者。求人広告会社の元施設長で、趣味は音楽制作(DTM)。育児に奮闘中です!