【laravel】compactとは?意味と使い方|compact(): Undefined variable: operatorエラーの対処法

最終更新日

この記事では、【laravel】compactとは?意味と使い方|compact(): Undefined variable: operatorエラーの対処法についてまとめました。

compactとは

変数や配列をコントローラーから渡すときに使う関数。

php公式リファレンスーcompact

 変数と値から配列を作成する

注意:

PHP 7.3 より前のバージョンでは、設定されていない全ての文字列は、単にスキップされます。

<?php
$city  = "San Francisco";
$state = "CA";
$event = "SIGGRAPH";

$location_vars = array("city", "state");

$result = compact("event", $location_vars);
print_r($result);

上の例の出力は以下となります。

Array
(
    [event] => SIGGRAPH
    [city] => San Francisco
    [state] => CA
)
https://www.php.net/manual/ja/function.compact.php

例からも分かるように、値は配列に格納されています。

なので、出力する際は配列に対応した出力方法が必須です。

使い方

この場合には$postをview(index)に渡していることがわかります。

するとviewでは以下のように変数を出力することができます。

入力(コントローラ)

public function index() { 
  $post = "postです";
  return view('index', compact('post')); 
}

bladeファイルで変数を出力する構文を使うと、コントローラーから渡された

$postが出力されます。

出力(bladeファイル)

<p>
    {{$post}}
</p>

複数の変数を渡す場合は、

compact()内にコンマで区切り複数記入します。

public function index() {

    $post_1 = "post_1です";
    $post_2 = "post_2です";

    return view('index', compact('post_1', 'post_2'));
}

他にもDBからのデータを取得してcompact関数にてviewに渡すなどがあります。

エラーについて

以下のエラーに遭遇しました。

compact(): Undefined variable: operator

解決方法

  1. PHP を 7.2 にダウングレードする
  2. 最新の Laravel にする
    1. 具体的に「composer update」を実行する

https://stackoverflow.com/questions/56726263/compact-undefined-variable-operator

fem