「PHPで文字や変数を結合したい」
「WordPressで表示をカスタマイズをしたい」
こんな悩みにお答えします。
PHPで文字列を結合するには3つの方法があります。
この記事では、以下の内容について解説します。
- 「.」(文字列演算子)で結合する
- 「.=」(代入演算子)で変数に代入し結合する
- 配列に格納してから、「implode」で結合する
記事を読み終えると、PHPの文字列結合の方法がわかり、WordPressなどのカスタマイズができるようになります。
PHPで文字列、変数を結合する方法 3選
実際にPHPでWebサイトやブログをつくるときに文字列だけを結合することはあまりなく、変数をからめたかたちで結合することがほとんどです。
文字列だけなら結合とかする必要がなく、そのまま書けばいいですから。
「.」(文字列演算子)で結合する
もっとも単純な結合には、「.」(文字列演算子)を使います。
以下のように数値を変数に代入し、単位の文字列と結合して出力します。
<?php $num = 5; echo $num . "個"; // 5個 ?>
JavaScriptの場合は「+」を使って文字列結合します。
はじめのうちは、混乱しやすいので注意してください。
- POINT
-
- 単純な文字列結合には「.」(文字列演算子)を使う
- JavaScriptの場合は「+」を使い、間違えやすいので注意する。
「.=」(代入演算子)で変数に代入し結合する
PHPで文字列が多い文章を書く場合によく使います。
Webサイトの表示で使うこともありますが、Webサイトのお問い合わせページや商品購入ページから送信するメールで使うことが多いです。
以下のように使います。
<?php $num = 5; $text = ""; $text .= "山田太郎様" . PHP_EOL; $text .= PHP_EOL; $text .= "ご注文ありがとうございます。" . PHP_EOL; $text .= "以下の内容で承りました。" . PHP_EOL; $text .= PHP_EOL; $text .= "個数:" . $num . "個" . PHP_EOL; echo $text; // 出力 /* 山田太郎様 ご注文ありがとうございます。 以下の内容で承りました。 個数:5個 */ ?>
「PHP_EOL」は、メールやソースコードで使う改行コードを出力するPHPの定数です。
Webサイトに出力する場合は、PHP_EOLのところをbrにします。
以下のようにすべて「.」(文字列演算子)を使って書いても同じ出力になるのですが、プログラムが見にくく感じます。
好みだったりチームのルールがあったりしますが、個人的には「.=」(代入演算子)を使って1行ずつ書くのがわかりやすいかなと思っています。
<?php $num = 5; $text = "山田太郎様" . PHP_EOL . PHP_EOL . "ご注文ありがとうございます。" . PHP_EOL . "以下の内容で承りました。" . PHP_EOL . PHP_EOL . "個数:" . $num . "個" . PHP_EOL; echo $text; // 出力 /* 山田太郎様 ご注文ありがとうございます。 以下の内容で承りました。 個数:5個 */ ?>
- POINT
-
- 複数行の文章を結合する場合は、「.=」(代入演算子)で変数に代入し結合する
- 空白行を含め1行ごとに変数へ代入するとわかりやすくなる
配列に格納してから、「implode」で結合する
以下の例では、1行を1つの要素として配列に文字列を格納していきます。
空白行には「""」(何もない)を格納しておきます。
すべての文字列を配列に格納したあとに「implode」を使って配列を文字列として結合します。
このとき、区切り文字をメールであれば「PHP_EOL」、Webであれば「br」とすれば改行することができます。
極端に長い文章をPHPプログラムで書くことはあまりないとは思いますが、配列を使うことで何度も改行コードを書く必要がなくなりプログラムがよりわかりやすくなります。
<?php $num = 5; $text = []; $text[] = "山田太郎様"; $text[] = ""; $text[] = "ご注文ありがとうございます。"; $text[] = "以下の内容で承りました。"; $text[] = ""; $text[] = "個数:" . $num . "個"; var_dump( $text ); // 配列の内容 /* array(6) { [0]=> string(15) "山田太郎様" [1]=> string(0) "" [2]=> string(42) "ご注文ありがとうございます。" [3]=> string(36) "以下の内容で承りました。" [4]=> string(0) "" [5]=> string(13) "個数:5個" } */ echo implode( PHP_EOL, $text ); // 出力 /* 山田太郎様 ご注文ありがとうございます。 以下の内容で承りました。 個数:5個 */ ?>
WordPressの場合だと、この配列を使うことでページごとやタイプごとに異なるときのカスタマイズに役立ちます。
以下のようなところでは、テーマの仕様とクライアントの要望、指示とがあっていないときはテーマを修正したり、全然違う場合はつくりなおしたほうが速いときもあります。
- title
- description
- パンくず
- ページ送り
- HTML class
titleを出力する場合は、テンプレートごとにそれぞれ必要な内容を配列に格納していきます。
<?php $separator = "|"; $title = []; if( is_front_page() || is_home() ){ $title[] = get_bloginfo("name"); // Example会社 $title[] = "岐阜のホームページ制作会社"; }else{ $page = get_post( get_the_ID() ); $page_title = $page->post_title; $title[] = $page_title; $title[] = get_bloginfo("name"); } echo "<title>" . implode( PHP_EOL, $title ) . "</title>"; // 出力 //トップページ <title>Example会社|岐阜のホームページ制作会社</title> //トップページ以外 <title>会社概要|Example会社</title> ?>
区切り文字は「|」とすることが多いですが、クライアントから指示がある場合は1箇所を変更すれば簡単に修正できます。
実際にはfunctions.phpに関数をつくっておくと、何度も使いまわしができて作業が効率化できます。
- POINT
-
- 複雑なパターンがある場合は、配列に格納してから「implode」で結合する
- 1度、配列にすることでカスタマイズがしやすくなる
まとめ
PHPで文字列、変数を結合する方法を3つ解説しました。
- 単純な文字列、変数の場合、「.」(文字列演算子)で結合する
- 複数行ある文章などの場合は、「.=」(代入演算子)で変数に代入し結合する
- さらに複雑パターンがある場合は、配列に格納してから「implode」で結合する
PHPの文字列結合の方法をいろいろ知っていると、WordPressなどのカスタマイズが効率的にできるようになります。