PHPで複数の変数をまとめて連想配列にする関数compact

使い方によってはめちゃくちゃ便利なPHPの関数compactについて。

PHP: compact – Manual

※ このブログは、 PHPで連想配列を複数の変数に展開する関数extract と対になっています。

複数の変数をまとめて連想配列にする

compactは一言で説明すると、「複数の変数をまとめて連想配列にする関数」です。

変数をまとめて連想配列にしたい時にどうするかというと、こんな普通に変数名をキーに、変数自体を値にして指定していきますよね。

$array = array(
	'user_id' => $user_id,
	'screen_name' => $screen_name,
	'age' => $age
);

これを勝手にやってくれるのがcompact

compact関数を使うと同様のことが1行で書けます。(上のarrayも1行といえば1行ですが・・・)

$array = compact('user_id', 'screen_name', 'age');

使い所は関数などに変数をまとめて渡したい時

次のようなパラメータが不定の関数を作りたくなるときがありますよね。これは、$user配列から、user_idとscreen_nameとageの値が存在するものだけを表示する関数です。

function outputUser($user) {
	if (isset($user['user_id']))
		echo "ID: {$user[user_id]}\n";
	if (isset($user['screen_name']))
		echo "Screen name: {$user[screen_name]}\n";
	if (isset($user['age']))
		echo "Age: {$user[age]}\n";
}

呼び出し元で連想配列を作る

この時、呼び出し元で、連想配列を作る必要があります。

$user_id = 1;
$screen_name = 'katty0324';
$age = 24;
 
outputUser(array(
	'user_id' => $user_id,
	'screen_name' => $screen_name,
	'age' => $age
));

ここで、連想配列を作る時に、compactが使えます。

$user_id = 1;
$screen_name = 'katty0324';
$age = 24;
 
outputUser(compact('user_id', 'screen_name', 'age'));

これは楽ですねー!

About katty0324

2 comments

Leave a Reply

Scroll To Top