本記事では、PHPの配列・連想配列・多次元配列の分割代入をする方法について解説しています。
- PHPの基本構文からクラス・データベース連携・セキュリティまで学べる
- PHPによるWebアプリ開発の基礎・基本テクニックを学べる
Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!
初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!
変数名/関数名にもう悩まない!
- 美しいコードが書けるが自然と書けるようになる
- 他の開発者が理解しやすいコードになる
配列の分割代入
配列の分割代入をする基本的な書き方は以下のとおりです。
[$variable, $variable] = array;
- $variable:変数名をセット(変数名と変数名は「,」で区切る)
- array:分割代入させたい配列
実際に配列の分割代入をするサンプルコードを用意したので、動作確認してみましょう。
<?php
$arr = ['a', 'b', 'c'];
[$str1, $str2, $str3] = $arr;
print_r($str1); // a
print_r($str2); // b
print_r($str3); // c
配列内にある3つの値が、それぞれ各変数に代入されていることが確認できます。もし、分割代入の変数($variable)を多く設定してしまった場合と少なく設定してしまった場合どのようになるか確認してみましょう。
[$str1, $str2, $str3, $str4] = $arr;
print_r($str4); // Warning: Undefined array key 3
多く設定した場合は、インデックス番号(添え字)の3番目のキーは存在しないとエラーが返されてしまいます。
[$str1, $str2] = $arr;
print_r($str1); // a
print_r($str2); // b
少なく設定した場合は、特にエラーは返されません。その代わり、変数に代入されなかった今回だと「”c”」はどこにも代入されません。
多次元配列の分割代入
先ほど学んだ方法で多次元配列も分割代入してみましょう。
<?php
$str = ['a', 'b', ['c', 'd'], ['e', 'f']];
[$str1, $str2, $str3, $str4] = $str;
print_r($str1); // a
print_r($str2); // b
print_r($str3); // Array ( [0] => c [1] => d )
print_r($str4); // Array ( [0] => e [1] => f )
変数$str1,$str2は正しく値が取得出来ていますが、変数$str3,$str4には配列そのものが代入されていることが確認できます。
これを正しく分割代入させるには、多次元配列の値が代入される変数を[]で囲ってあげます。
<?php
$str = ['a', 'b', ['c', 'd'], ['e', 'f']];
[$str1, $str2, [$str3, $str4]] = $str;
print_r($str1); // a
print_r($str2); // b
print_r($str3); // c
print_r($str4); // d
連想配列の分割代入
連想配列の分割代入をする基本的な書き方は以下のとおりです。
['key' => $variable, 'key' => $variable] = array;
- key:連想配列のキーを指定
- $variable:変数名をセット(変数名と変数名は「,」で区切る)
- array:分割代入させたい連想配列
実際に連想配列の分割代入をするサンプルコードを用意したので、動作確認してみましょう。
<?php
$person = ['name' => 'Taro', 'age' => 20];
['name' => $name1, 'age' => $age1] = $person;
print_r($name1); // Taro
print_r($age1); // 20
連想配列内にある2つの値が、それぞれ各変数に代入されていることが確認できます。もし、分割代入のキー(key)の値が存在しなかった場合どのようになるか確認してみましょう。
['gender' => $gender1] = $person;
print_r($gender1); // Warning: Undefined array key "gender"
存在しないキーを指定した場合は、そんなキーはないよとエラーが返されてしまいます。