【PHP】変数展開 – 文字列中に変数の値を差し込む

【PHP】変数展開 – 文字列中に変数の値を差し込む

変数を使って新しい文字列を生成する方法には文字列結合以外に『変数展開』があります。

ここでは変数展開について解説します。

検証環境

変数展開

変数展開は“文字列の中に変数の値を差し込む処理”のことです。

基本構文

"変数"

文字列の中に変数を記述することで、文字列の処理時に変数の値に置き変わります。

変数展開はダブルクォート(")の文字列のみで使用可能です。

シングルクォート(')の文字列では使用できません。

サンプル

<?php

$country = 'Japan';

___ih_hl_start
$message = "Hello $country\n";
___ih_hl_end

echo $message;

?>
$ php sample.php
Hello Japan

文字列展開は5行目の"Hello $country\n"の部分です。

文字列の内容には通常の文字を含むことができ、任意の場所に変数を記述できます。

実行結果から$countryの値('Japan')に置き換わっていることが分かります。

なお、シングルクオートの文字列に変えた場合、変数は文字として扱われてしまうので注意しましょう。

<?php

$country = 'Japan';

___ih_diff_start
-$message = "Hello $country\n";
+$message = 'Hello $country\n';
___ih_diff_end

echo $message;

?>
$ php sample.php
Hello $country

波括弧({}

変数展開には波括弧({})を使う方法があります。

この方法を使うことで変数の部分を明確に表すことが可能です。

基本構文

"{$変数名}"

サンプル

<?php

$country = 'Japan ';

___ih_hl_start
$message = "Hello {$country}Tokyo\n";
___ih_hl_end

echo $message;

?>
$ php sample.php
Hello Japan Tokyo

5行目の変数展開で波括弧を使用しました。

波括弧によって変数の部分が明確になっています。

メリット

変数の部分が明確になることが波括弧を使った変数展開のメリットです。

上記サンプルで波括弧を使わない場合、エラーが発生します。

<?php

$country = 'Japan ';

___ih_diff_start
-$message = "Hello {$country}Tokyo\n";
+$message = "Hello $countryTokyo\n";
___ih_diff_end

echo $message;

?>
$ php sample.php
PHP Warning:  Undefined variable $countryTokyo in sample.php on line 5

Warning: Undefined variable $countryTokyo in sample.php on line 5

エラーの原因はプログラムの実行時に$countryTokyoが変数部分と判定されますが、そのような変数が存在しないことです。

このように変数に続いて間を空けずに文字を記述する場合は、波括弧を使うことで意図した処理を行えます。

演習問題

問題1

次の実行結果になるプログラムを作成してください。
なお、下記の条件を満たすものとします。

  1. Deploymentは変数に代入
  2. 1の変数を変数展開して出力
Variable Deployment

問題2

次の実行結果になるプログラムを作成してください。
なお、下記の条件を満たすものとします。

  1. AppleOrangeMelonは異なる変数に代入
  2. 出力時に1の変数を変数展開して出力
Apple Orange Melon