スポンサードリンク

PHP
PHP

CakePHPを使っていて

compact関数とextract関数というものを見つけました。

どんな関数かしらなかったので

調べてみました。

スポンサードリンク

変数名とその値から配列を作成するcompact関数

array compact ( mixed $varname1 [, mixed $… ] )

変数名とその値から配列を作成します。

変数名がキー、変数の値がそのキーに関する値となります。

$first_name = "太郎";
$last_name = "山田";
$address = "東京都";

$result = compact("first_name", "middle_name", "last_name", "address");
print_r($result);

(結果)
Array ( [first_name] => 太郎 [last_name] => 山田 [address] => 東京都 )

compactで指定するときは、変数名を指定します。

$を付けずに指定しなければいけないです。

キーを指定するイメージですね。

middle_nameは変数にないのでスキップされています。

compantの引数は配列でも指定できるようで

$first_name = "太郎";
$last_name = "山田";
$address = "東京都";

$key = array("first_name", "middle_name", "last_name", "address");

$result = compact($key);
print_r($result);

(結果)
Array ( [first_name] => 太郎 [last_name] => 山田 [address] => 東京都 )

上記のように配列でキーを作って引数にいれても同じ結果になります。

配列から変数を作成するextract関数

extract ( array &$array [, int $flags = EXTR_OVERWRITE [, string $prefix = NULL ]] )

配列から変数を作成します。

各キーについて変数名として有効であるかどうか、そして、シンボルテーブルの既存の変数と衝突しないかどうかを確認します。

$array = array("first_name" => "太郎", "last_name" => "山田",  "address" => "東京都" );
$result = extract($array);
print_r($result);
echo "<br>";
echo $first_name;
echo "<br>";
echo $last_name;
echo "<br>";
echo $address;

(結果)
3
太郎
山田
東京都

$resultにはextractの結果でできた変数の数が入るみたいです。

関数を実行後に

配列のキーの名前で変数ができます。

(参考)
PHP関数「compact」と「extract」を試してみる

スポンサードリンク