オーダーメイドコース
icon
icon

PHPの変数名を変数にする「可変変数」の使い方を現役エンジニアが解説【初心者向け】

初心者向けにPHPの変数名を変数にする「可変変数」の使い方について現役エンジニアが解説しています。可変変数とは変数名を動的に設定する方法のことです。$$変数名や${}を使って書くことが出来ます。そうすると変数の値に入ってる値が変数の名前になります。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

今回は、PHPの変数名を変数にする「可変変数」の使い方について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

 

PHPについてそもそもよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、PHP/Laravel講座の内容をもとに紹介しています。

 

田島悠介

今回は、PHPに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

PHPの変数名を変数にする「可変変数」の使い方について詳しく説明していくね!

大石ゆかり

お願いします!

 

可変変数とは

変数名は$exampleのようにコードに直接書いてあるため、変更できないと思うかもしれません。

しかし、変数名は可変にできます。

可変変数の使い方

普通の変数名はコードに直接書かれます。

通常は次のように書きます。

$example = 'hello';

では、可変変数はどのように書くのでしょうか。

$name = 'variable';
$$name = 'hello';

このように書かれます。

実際に対話シェルで動かして確認してみましょう。

php -a

php > $name = 'variable';
php > $$name = 'hello';
php > echo $variable;
hello
php > echo $$name;
hello

最初の$nameは変数名を指定しています。

次の$$nameという書き方が、可変変数の特徴的な書き方です。また、変数名の混乱を避けたり、変数名を柔軟に変更するために${$name}という書き方ができます。

なぜこのような表記が必要なのかについては、実際のコードで説明します。

[PR] PHPを学んで未経験からWebエンジニアを目指す方法とは

実際に書いてみよう

では、実際のコードを見てみましょう。

<?php

function sendThePackage($name, $address1, $address2, $address3)
{
  if (empty($name)) {
    echo '名前を入れてください';
    exit;
  }

  for ($i = 1; $i <= 3; $i++) {
    $var_name = 'address' . $i;
    if (empty($$var_name)) {
      echo '住所を入れてください';
      exit;
    }
  }

  echo '入力ありがとうございます';
}

$$var_nameの部分が可変変数になっています。$var_nameを’address1’、’address2’、’address3’と変化させています。

これによって、$address1、$address2、$address3を調べることができるわけです。

では、$var_nameを使わないとどうなるのでしょうか。

[抜粋]
    $var_name = 'address' . $i; //削除
    if (empty(${'address' . $i})) {

このように、先ほど解説した、{}を使って表現できます。

この他にも、可変プロパティなどもありますので、ぜひ公式マニュアルを見てみてください。

筆者プロフィール

植西重史(うえにししげふみ)

職業プログラマー歴は2020年現在で27年、新卒入社当時はCOBOL・C言語。フリーランスになってからは主にPHPを使ってシステム開発、WordPressを使って企業ページなどを開発してきました。

TechAcademyではPHP/Laravel、はじめてのプログラミング、WordPressコースを担当しております。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも、PHPやフレームワークのLaravelを使ってWebアプリケーション開発を習得できる、オンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。