Laravel视图遍历报错:Cannot access offset of type string on string
问题:Laravel视图访问数组元素报错“Cannot access offset of type string on string”
我尝试向Laravel视图传递模拟数据,但在访问数组元素时持续报错“Cannot access offset of type string on string”。作为PHP新手,不清楚报错原因,寻求技术帮助。
路由代码
Route::get('/', function () { return view('home', [ 'jobs' => [ 'title' => 'Influencer', 'salary' => '790,340' ], [ 'title' => 'Farmer', 'salary' => '560,890' ], [ 'title' => 'Doctor', 'salary' => '760,881' ], [ 'title' => 'Engineer', 'salary' => '1,247,122' ] ]); });
视图代码
<x-layout> <x-slot:heading> Home Page </x-slot:heading> @foreach ($jobs as $job) <li>{{ $job['title'] }}</li> @endforeach </x-layout>
问题原因与解决方法
错误原因
你传递jobs数据的格式有误:当前代码中,'jobs'只赋值了第一个job数组,后面的三个job数组是作为视图数据的独立项存在的,并没有包含在jobs的数组里。这导致$jobs实际上是一个单个的关联数组(仅包含Influencer那一条数据),而非你预期的多个job组成的多维数组。
当你用@foreach遍历$jobs时,实际是在遍历这个关联数组的键(title、salary),此时循环变量$job是字符串类型(比如'title'),再去访问$job['title']就会触发报错——字符串不支持数组偏移量访问方式。
修正后的路由代码
Route::get('/', function () { return view('home', [ 'jobs' => [ [ 'title' => 'Influencer', 'salary' => '790,340' ], [ 'title' => 'Farmer', 'salary' => '560,890' ], [ 'title' => 'Doctor', 'salary' => '760,881' ], [ 'title' => 'Engineer', 'salary' => '1,247,122' ] ] ]); });
修正说明
把所有job的数组都包裹在'jobs' => []这个外层数组内部,这样$jobs就变成了包含4个元素的多维数组。此时@foreach遍历的是每个job项,$job是包含title和salary的关联数组,访问$job['title']就可以正常获取数据了。
内容的提问来源于stack exchange,提问作者BARIMA YAW
相关产品推荐
相关产品推荐

