使い方によってはめちゃくちゃ便利な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日付未入力}\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'));
これは楽ですねー!
コメント
[…] Post navigation ← Previous […]
[…] compact関数でまとめて返します。( PHPで複数の変数をまとめて連想配列にする関数compact […]