compact関数:複数の変数を1つの配列に集約する

使い方

$vars = compact( "var1", "var2", "var3" ... );

extract関数を以前ご紹介しましたが、その反対を行う関数もPHPでは用意されています。

つまり、別々の名前で宣言した変数を1つの配列に集約することができる関数です。
百聞は一見に如かず。早速サンプルをご覧ください。

サンプルプログラム

<?php
$banana = 100;
$melon = 20;
$grape = 300;

$fruits = compact("banana", "melon", "grape");
var_export($fruits);

実行結果

array (
  'banana' => 100,
  'melon' => 20,
  'grape' => 300,
)

このように何も難しくはありません。

ただし、注意点としてcompact関数の引数には、変数をそのまま渡すのではなく、変数の名前を文字列で指定しなければなりません。
勘違いしているとハマります。。

使いどころ

コントローラーで宣言した変数をビューで参照するときに、変数を渡して上げたいときなどに意外と役に立ちます。
個人的な事情で、ここ最近はCakePHPでの開発が多いため、

$this->set('var1', $var1);
$this->set('var2', $var2);

と書くよりは、
compact関数を使って

$this->set(compact('var1', 'var2'));

と言う風に1回で書けるので重宝しています。

公式サイト

http://php.net/manual/ja/function.compact.php

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>