PHPプログラミング

最終更新日:
公開日:

レシピ

配列

配列を変数へ分割

extract関数を使って連想配列を個別の変数に分割する方法を解説します。

この記事のポイント

  • extract関数の基本的な使い方を確認する
  • 配列の添字(キー)が数値でも変数に分割する

目次

概要

最初に、extract関数について解説します。

1つ目のパラメターには、分割したい配列を渡します。

2つ目以降のパラメータはオプションとなり、指定は任意です。
変数名の衝突があった場合や、配列のキーが数値の場合における対処法を指定します。

実際にコードの動作をみていきましょう。

配列を分割してみる

まずはシンプルに連想配列を分割してみます。

PHP コード例

// 変数の初期化
$name = null;
$gender = null;
$age = null;
$email = null;
$personalData = array(
	"name" => "Alex",
	"gender" => "men",
	"age" => 30,
	"email" => "nickerdoodle@sample.co.jp"
);

// 配列を分割する前の変数を出力
var_dump($name);
var_dump($gender);
var_dump($age);
var_dump($email);

// 配列を分割
extract($personalData);

// 分割後の変数を出力
var_dump($name);
var_dump($gender);
var_dump($age);
var_dump($email);

実行結果

解説

分割する配列を$personalData、分割後にデータを格納する変数を4つ用意しました。

// 配列を分割する前の変数を出力」で出力した結果では、変数はnullで初期化したものをそのまま出力しているだけですが、分割後の「// 分割後の変数を出力」では配列の値が1つずつ格納されていることが分かります。

なお、分割を行なった配列自体は初期化されるわけではないため、特に変化はありません。
必要があれば、引き続き使用することができます。

キーが数値の配列を分割

次に、キーが数値の場合の配列を分割していきます。
PHPでは$0など変数名の頭文字に数字をつけることはできません。
そのため、配列のキーが数値の場合は2つ目以降のパラメータを指定し、プレフィックスを指定することで分割できるようになります。

PHP コード例

// 変数の初期化
$personalData = array(
	0 => "Alex",
	1 => "men",
	2 => 30,
	3 => "nickerdoodle@sample.co.jp"
);

// 配列を分割
extract( $personalData, EXTR_PREFIX_INVALID, "gray");

// 分割後の変数を出力
var_dump($gray_0);
var_dump($gray_1);
var_dump($gray_2);
var_dump($gray_3);

実行結果

解説

今回は、2つ目のパラメータを「EXTR_PREFIX_INVALID」、3つ目のパラメータであるプレフィックスを「gray」と指定しました。
そのため、配列のキーが「0」の場合は分割後、$gray_0という変数に格納されることになります。

同じように、「1」は$gray_1、「2」は$gray_2のように自動的にプレフィックスをつけた変数に格納されていきます。

2つ目のパラメータについては、上記以外にもいくつか設定できる定数の種類があります。
詳しくはphp.netを参照してください。

extract関数 – php.net