【Laravel】compact関数について(PHP)/初心者向け

compact関数について、まとめます。

compact関数とは

compact関数とはPHPに予め備わっている関数で変数名とその値から配列を作成する。

各引数は、compact() は現在のシンボルテーブルにおいてその名前の変数を探し、 変数名がキー、変数の値がそのキーの値となるように追加します。 PHPマニュアルより

compact関数の使い方

実際にコードを書いて見てみましょう。

まずはcompact関数を使わずに配列を作成してみます。

//compact関数を使わない場合
$user = [ 'name'=>'hoge', 
      'email'=>'fuga@fuga.com', 
      'adress'=>'hoge town'
     ];

続いてcompact関数を使用して配列を作成します。

//compact関数を使う場合

//変数を定義
$name = 'hoge',
$email = 'fuga@fuga.com',
$adress = 'hoge town'

//compact関数で配列を作成
$user = compact('name', 'email', 'adress');
= [
    "name" => "hoge", 
    "email" => "fuga@fuga.com",
    "adress" => "hoge town",
  ]

//print_r関数で変数の情報を出力
print_r($user);
Array
(
  [name] => 'hoge'
  [email] => 'fuga@fuga.com'
  [adress] => 'hoge town'
)
= true

このようにcompact関数は変数名と値から配列を作成してくれます。

注意すべき点はcompact関数の引数を書くときは、変数名の$を書かずに ’ ’ で囲んで指定することです。

//先ほどの場合
$name = 'hoge',
$email = 'fuga@fuga.com',
$adress = 'hoge town'

$user = compact('name', 'email', 'adress'); //$を抜き''で囲う

compact関数を使うメリット

なぜわざわざcompact関数を使うのかというとcompact関数を使うとタイプミスを減らすことができます。

例えば先ほど書いたコードを見てみましょう。

//compact関数を使わない場合
$user = [ 'name'=>'hoge', 
      'email'=>'fuga@fuga.com', 
      'adress'=>'hoge town'
     ];

上のように書くと配列のキーとして’name’、’email’、’adress’を配列のキーとして毎回書くことになります。

//compact関数を使う場合
//変数を定義
$name = 'hoge',
$email = 'fuga@fuga.com',
$adress = 'hoge town'

//compact関数で配列を作成
$user = compact('name', 'email', 'adress');

compact関数を使う場合は変数名と配列のキーが同じになります。

もしタイプミスをしたとしてもデバッグ 時に値を取得できないためタイプミスに気づくことができます。

Laravelでの使用例

Laravelではcompact関数はよく使われる関数になります。

Laravelではコントローラーからビューに値を渡すときに使用されます。

public function index()
{
  $tasks = Task::all();
  return view('tasks.index', compact('tasks')); //compact関数を使用
}

この場合は$tasksに格納された値をcompact関数で配列に置き換えてビューファイルに渡しています。

このコードをcompact関数を使わずに書くと以下のようになります。

return view('tasks.index', ['tasks' => $tasks]); //compact関数を使用しない

 

まとめ

  • compact関数は配列を作成する関数。
  • compact関数を使用することにより、ミスが少ないコードを書くことができる。
  • Laravelでもコントローラーからビューに値を渡すときに使用される。

参考:

PHPで知っておきたい!compactの使い方とテクニック
ということを思っていませんか? 今回は、配列を作るときに便利な関数、compactの使い方とテクニックについて ...

コメント