変数名を使った配列操作
extract()
extract()の構文は「extract(対象配列 [, 展開時の対処, [プレフィックス]]);」です。
extract()は対象配列のキーを変数名、それに対応する値を変数の値として処理します。数字のキーを使うには、プレフィックスをつける「EXTR_PREFIX_ALL」か「EXTR_PREFIX_INVALID 」を第二引数に指定しなければなりません。デフォルトは、「EXTR_OVERWRITE」です。返り値はシンボルテーブルにインポートされた変数の数ですが、キーから作成された変数にはキーに対応する値が変数値に入っています。
以下は、第二引数に指定できるフラグ。
「EXTR_OVERWRITE」は同名の変数があれば上書きします。
「EXTR_SKIP」は同名の変数があれば上書きしません。
「EXTR_PREFIX_SAME」は同名の変数があればプレフィックスを追加。
「EXTR_PREFIX_ALL」全ての変数名にプレフィックスをつけます。
「EXTR_PREFIX_INVALID」無効もしくは数値の変数名にだけプレフィックス追加。
「EXTR_IF_EXISTS」同じ変数名がある時だけ要素を展開。
「EXTR_PREFIX_IF_EXISTS」は同じ変数名があればプレフィックスを追加して展開。
「EXTR_REFS」は変数をリファレンスとして展開。
これらはビット演算子で複数設定することが可能です。
第四引数は、第三引数が「EXTR_PREFIX_SAME」「EXTR_PREFIX_ALL」「EXTR_PREFIX_INVALID」「EXTR_PREFIX_IF_EXISTS」を指定した場合に必要なる引数です。
| 1 |
| 2 |
| 3 |
| $a = array("b1" => "BB","c1" => "CC","d1" => "DD"); |
| echo extract($a).'。'; |
| echo $b1.':'.$c1.':'.$d1; |
compact()
compact()の構文は「compact(変数名1 [, 変数名2・・・]);」です。
compact()は変数名とその変数に入れられている値から、新たな一つの配列を作成します。ここで言う変数名とは、例えば「$name」から「$」を取り除いた「name」の部分のことです。また、変数名に配列を指定することも可能です。compact()は再帰的に処理します。分かりやすく言えばcompact()関数は、extract()関数の逆のことをします。
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
| $a = "AAA"; |
| $b = "BBB"; |
| $c = "CCC"; |
| // |
| $com = compact('a', 'b', 'c'); |
| print_r($com); |
| // |
| $array = array('a', 'b', 'c'); |
| $com = compact($array); |
| print_r($com); |
Array
(
[a] => AAA
[b] => BBB
[c] => CCC
)
Array
(
[a] => AAA
[b] => BBB
[c] => CCC
)