PHPの連想配列から変数を作成するサンプルです。
extract関数を使用します。
確認環境 ・PHP 7.2.8 ・XAMPP 7.2.8 ・Windows 10 |
目次
extract関数
int extract ( array &$array [, int $flags = EXTR_OVERWRITE [, string $prefix = NULL ]] ) |
- 1つめの引数の連想配列を変数にします。
- 2つめの引数は、関数実行時にすでに変数が存在してい場合にどのような挙動をするかを指定します。
例:変数がすでにあったときは、別名保存する、上書きする等。
パターンについては、公式ページを参照願います。 - 3つめの引数は、2つめの引数を指定した時でprefixを使用する場合、どのようなprefixをつけるか等に使用します。
- $_GET や $_FILES のようなユーザーの入力による値をextract()の引数に使用してはいけません。
- 以下は、PHPマニュアルのextract関数のリンクです。
http://php.net/manual/ja/function.extract.php
コード
extractを使用したサンプルです。
<?php
$ar1 = ['c1'=>'赤',
'c2'=>'黄',
'c3'=>'青'
];
extract($ar1);
echo $c1; //赤
echo $c2; //黄
echo $c3; //青
?>
8行目は、extract関数で連想配列を変数にしています。
変数の衝突があった場合、変数に別名を付ける
変数の衝突があった場合、変数に別名を付けるサンプルです。
<?php
$c1 = 1;
$c2 = 1;
$ar1 = ['c1'=>'赤',
'c2'=>'黄',
'c3'=>'青'
];
extract($ar1,EXTR_PREFIX_SAME,"pre");
echo $pre_c1; //赤
echo $pre_c2; //黄
echo $c3; //青
?>
3,4行目は、変数です。
6~9行目は、連想配列です。
11行目は、extract関数で連想配列を変数にしています。EXTR_PREFIX_SAMEは、変数名の衝突があった場合、3つめの引数を変数名の前につけて新しい変数にします。
13,14行目は、変数が衝突するので、11行目に指定したpreとアンダスコアがついた変数になっています。
15行目は、変数は衝突しないので、連想配列のキーのままの変数名になっています。
関連の記事
PHP 配列の仕組みと使い方のサンプル
PHP foreach文のサンプル(break/continue)
PHP 変数から連想配列を作成するサンプル(compact)