NTR893
@NTR893 (おいなり)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

@eachについて

1. 【必須】やりたい・やりたかったこと

@eachで、定義したはずの変数が、Undefinedエラーになった理由を知りたい

2. 【必須】起きている問題やエラーメッセージ ※できるだけ詳細に書いてください

Undefined variable: first

3. 【必須】ご自身で試されたこと ※できるだけ詳細に書いてください

エラーの原因はわかっています。
controllerにある、$data2をviewに送り、viewで、@eachを使い、componentに送り、その中身をcomponentで表示させるといった流れで

その際に、こんな感じで、[]の値を統一したら、firstの内容を読み取って、表示は無事にされたのですが、「」の中のfirstを統一させなかったらどうなるのか試そうと思い、2つ目のfirstを、secondに変えたら今回のようなエラーになりました。
$data2 = [
['first'=>'1'],
['first=>'2']
];

エラー文のUndefined index: first謎で、2つ目はsecondに変えたけど、1つ目の['first'=>'1']はそのまま残してあるので、Undefinedつまり、見つからないということはないのではないかと思い、なんでこのエラーが出るのか質問をしているという状況でございます。

4. 関連するソースコードやスクリーンショット

controller(今回は、data2のほうを使っています)

    public function index2()
    {
       $data = [
           ['name'=>'山田たろう', 'mail'=>'taro@yamada'],
           ['name'=>'田中はなこ', 'mail'=>'hanako@flower'],
           ['name'=>'鈴木さちこ', 'mail'=>'sachico@happy']
       ];

       $data2 = [
           ['first'=>'1'],
           ['second'=>'2']
       ];

       return view('hello.index2', ['data'=>$data], ['data2'=>$data2]);
    }

view

<ul>
@each('components.item', $data2, 'item')
</ul>

components

<table>
    <tr>
        <th class="design01">{{$item['first']}} </th>  
    </tr>
</table>

5. 関連するURL ※GithubのリポジトリリンクやサーバーのURLなど

6. 使用言語・ライブラリのバージョン ※できるだけ詳細に書いてください

Laravel Framework 8.83.1

0

1Answer

ループと読み込みをBladeの@eachディレクティブで1行に組み合わせられます。

@eachがやっているのはこんなイメージだと思います。

$data2 = [
    ['first'=>'1'],
    ['second'=>'2']
];

foreach ($data2 as $item) {
    $item['first'];
}

最初のループでは$itemにfirstがありますが、2回目はありません。

1Like

Comments

  1. @NTR893

    Questioner

    ありがとうございます!

Your answer might help someone💌