laravel 使用foreach循环时,“无法访问字符串上字符串类型的偏移量”

qni6mghb  于 2022-12-01  发布在  其他
关注(0)|答案(2)|浏览(126)

我在blade.php中使用foreach循环时收到一个错误。我尝试过很多方法,但每次使用foreachloop时都收到相同的错误
下面是我的代码Post.blade.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <ul>
    @foreach($datafromtestmodel as $rows)
        <li>
            <p>{{$rows['name']}}</p>
            <p>{{$rows['company']}}</p>
            
        </li>
    @endforeach
    </ul>
    
</body>
</html>

控制器功能

public function index()
    {
        $testmodeldata = new testmodel;
        $datafromtestmodel = $testmodeldata ->abc();
        return view('post', compact('datafromtestmodel'));
    }

模型函数

public function abc(){
        $blabla = ['name' => 'abc', 'company' => 'abc company'];
        return $blabla;
    }

路线

Route::get('post','PostController@index');
xurqigkl

xurqigkl1#

正如我所看到的,'$datafromtestmodel'将是一维数组,但在blade文件中,您将其视为多维数组。这可以通过两种方式修复。或者像这样从模型函数返回多维数组。

public function abc(){
    $blabla = [['name' => 'abc', 'company' => 'abc company']];
    return $blabla;
}

或者你必须在刀片文件中更新它。

@foreach($datafromtestmodel as $key => $value) //Here $key will be "name" and "company" and $value will be "abc" and "abc company" 
        <li><p>{{$value}}</p></li>
    @endforeach
2jcobegt

2jcobegt2#

您的$datafromtestmodel直接包含['name' => 'abc', 'company' => 'abc company']
所以当你循环到每一项时,不是数组,而是直接值(第一次迭代时为'abc',第二次迭代时为'abc company')。它们不是数组。
要了解为什么abc函数应该返回数组值的数组

public function abc(){
        $blabla = ['name' => 'abc', 'company' => 'abc company'];
        return [$blabla];
    }

相关问题