【PHP】アロー演算子 -> とダブルアロー演算子 => の違いとは何?実例で解説

PHP
記事内に広告が含まれていることがあります。
[PR]

PHPで構成されているWordpressなど、ハイフン + 小なりで構成されるアロー演算子(->)とイコール + 小なりで構成されるダブルアロー演算子(=>)が出てくることがある。

このアロー演算子 -> とダブルアロー演算子 => の違いについて。

アロー演算子 -> とダブルアロー演算子 => の違い

見た目は似ているが、全く異なる機能。完結にまとめると、

  1. アロー演算子: オブジェクトで使う。プロパティを呼び出す。
  2. ダブルアロー演算子: 連想配列で使う。キーに対してバリュー(値)を指定する。

使う場面が、オブジェクトと連想配列となり完全に異なる。以下でそれぞれもう少し詳しく説明。

アロー演算子 -> の使い方

アロー演算子はオブジェクトでプロパティを呼び出すときに使う。

オブジェクトとはデータを一まとめにしたもの。一つのオブジェクトは空間が区切られるため、異なるオブジェクトであれば同じ変数名や関数名を使うことができる。

実態としては、クラスやクラスから生成したインスタンスが該当する。

実例

例えば、以下のようにHelloWorldというクラスを作成し、中にプロパティとして$msgを作成する。

クラスの中でこのプロパティにアクセスするためにはアロー関数->を使って、$this->msg と記述する。

クラスの外で使う場合は、new クラス名 でインスタンスを生成して、アロー関数->を使って、インスタンス->プロパティ名 として値を呼び出す。

//クラスの作成
class HelloWorld {
    // プロパティの宣言
    public $msg = 'Hello World!';

    // メソッドの宣言
    public function greeting() {
        echo $this->msg;
    }
}

//関数の作成
function call_greeting(){
  $obj = new HelloWorld();
  $obj->greeting();
}

call_greeting()

処理の流れと実行結果は以下となる。

  1. 関数call_greetingを実行
  2. クラスHelloWorldからインスタンスを生成し変数$objに代入
  3. インスタンスの中のgreeting関数を実行
  4. クラスの中の$msgプロパティをechoする。
  5. Hello Worldが表示される。

ダブルアロー演算子 => の使い方

ダブルアロー演算子は連想配列でKey(キー)に対してValue(値)を指定するときに使う。こっちの方が馴染みがあるはず。

‘キー名’ => ‘値’ の形で指定する。

  $arr = [
    'key1' => 'val1',
    'key2' => 'val2',
    'key3' => 'val3'
  ];

  echo $arr['key1'];

処理の流れと実行結果は以下となる。

  1. $arrという変数を作成。中身は連想配列
  2. key1に対して、val1を割り当てる。
  3. key2に対して、val2を割り当てる。
  4. key3に対して、val3を割り当てる。
  5. $arrのkey1の値をechoで表示する。
  6. val1が表示される。

以上。アロー演算子 -> とダブルアロー演算子 =>は見た目がとても似ているが、使うところと処理内容が全く異なるので注意が必要。

タイトルとURLをコピーしました