在 laravel 刀片中解析数组

Posted

技术标签:

【中文标题】在 laravel 刀片中解析数组【英文标题】:parse array in laravel blade 【发布时间】:2016-06-24 18:36:48 【问题描述】:

我的视图页面由 $data->attachment 渲染

["filename":"hello.jpg", "location":"/home/my_folder"].

这里我尝试使用

view 页面中显示文件名
@foreach($data->attachment as $attachment)
   $attachment->filename
@endforeach

这给了我

为 foreach() 提供的参数无效

我在尝试

$data->attachment->filename

这给了我

试图获取非对象的属性

我做错了什么?我怎样才能显示文件名?谢谢。

【问题讨论】:

通过$attachment = $data->attachment->toArray() 尝试并传递此$attachment 变量以查看和迭代foreach 循环。 var_dump($data->attachment) 得到什么? 问题["filename":"hello.jpg", "location":"/home/my_folder"]中提到 那不是 var_dump,我想说的是它是作为字符串回显还是对象 仍然允许您在视图中使用此方法。实际上 foreach 需要数组或对象来迭代,但你有 JSON 数据。所以尝试如下可能会有所帮助: attachment()->toArray(); ?> 在你看来 【参考方案1】:

正如您在 cmets 中提到的,$data->attachment 的值实际上是一个字符串。为了在循环中对其进行迭代,您需要将其转换回数组。

因此,如果您将循环更改为:

@foreach(json_decode($data->attachment) as $attachment)
    $attachment->filename 
@endforeach

你应该得到你想要的。

我要补充一点,这种转换的正确位置应该在您的控制器中,而不是您的视图中。

您的问题并不完全清楚,所以这一切都假设您知道您在使用 foreach 循环时在做什么,这意味着您实际上在 $data->attachment array 中有多个条目。如果它只是一个附件,而你真的只是想获取文件名,那么你不需要循环,你只需要说:

 json_decode($data->attachment)->filename 

我要再次补充一点,所有内容都属于您的控制器,因此在您看来,您最终会得到类似 $filename

【讨论】:

以上是关于在 laravel 刀片中解析数组的主要内容,如果未能解决你的问题,请参考以下文章

在 laravel 刀片中显示 JSON 数组

Laravel - 如何将数组提取到变量并在刀片中使用它们

在刀片中显示 laravel DB::select 数组

Laravel - 无法使用刀片从多维数组中获取值

Laravel - 如何在视图中创建(匿名)动态刀片组件

使用 Javascript 在 Laravel 刀片视图中显示数组中的动态数据时出现问题