Laravel出现Trying to access array offset on value of type int错误求助
解决Laravel视图数组访问报错:Trying to access array offset on value of type int
问题情况
无法访问创建的数组并展示其值,单独查看变量$listings时数组显示正常,但在视图中出现错误:Trying to access array offset on value of type int。
路由代码
Route::get('/', function() { return view('listings', [ // $Variable - Value 'heading' => 'Latest Listings', 'listings' => [ 'id' => 1, 'title' => 'Listing One', 'description' => 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Odio dolorem adipisci aliquam ducimus! Sit ipsa, voluptates ab sapiente inventore odit.' ], [ 'id' => 2, 'title' => 'Listing Two', 'description' => 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Odio dolorem adipisci aliquam ducimus! Sit ipsa, voluptates ab sapiente inventore odit.' ] ]); });
视图代码(listings.php)
<h1> {{ $heading }} </h1> @if(count($listings) == 0) <p>No listings found.</p> @endif @foreach($listings as $list) <h2>{{ $list['title'] }}</h2> <p>{{ $list['description'] }}</p> @endforeach
错误原因
路由中传递给视图的数组结构错误:第二条列表项被直接放在了外层数组中,而非listings对应的数组内部。这导致视图里的$listings实际只是第一条单条列表数据(关联数组),而非包含两条数据的数组。当用foreach遍历$listings时,遍历的是这条单条数据的键值对(比如id对应的值是整数1),此时$list变成int类型,尝试访问$list['title']就会触发类型错误。
修复方案
把两条列表数据都包裹在listings对应的数组里,修正后的路由代码如下:
Route::get('/', function() { return view('listings', [ 'heading' => 'Latest Listings', 'listings' => [ [ 'id' => 1, 'title' => 'Listing One', 'description' => 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Odio dolorem adipisci aliquam ducimus! Sit ipsa, voluptates ab sapiente inventore odit.' ], [ 'id' => 2, 'title' => 'Listing Two', 'description' => 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Odio dolorem adipisci aliquam ducimus! Sit ipsa, voluptates ab sapiente inventore odit.' ] ] ]); });
修正后$listings成为包含两个关联数组的数组,视图中的foreach可以正常遍历每条数据,访问$list['title']和$list['description']也不会再报错。
内容的提问来源于stack exchange,提问作者Mindaugas
相关产品推荐
相关产品推荐

