我从看起来像以下示例的形式中得到了一个数组:
array [
"absender" => "Maxim Ivan",
"email" => "maximivan@example.com",
"telefon" => "1234567890",
"fax" => null,
"grund" => "Gehaltserhöhung",
"termin" => [
0 => [
"person" => "Some Name",
"meeting" => "10.05"
],
1 => [
"person" => "Another Name",
"meeting" => "18.05"
],
2 => [
"person" => "Again another name",
"meeting" => null,
"next-possible-meeting" => "1"
],
3 => [
"person" => "And again",
"meeting" => null,
"next-possible-meeting" => "1"
],
4 => [
"meeting" => null,
],
"bemerkung" => "some notes by Maxim"
]
我对数组进行了编码,以使其可以在upload
方法中访问,如下所示:
<input type="hidden" value="{{ json_encode($arrayData) }}" name="array" />
在upload
方法中,我有一个验证(http请求)类作为$ request参数,因此我得到了数组并像这样直接对其进行解码:
$array = json_decode($_POST['array']);
我将$array
赋予刀片视图,但是当我尝试访问它以显示如下值时:
// controller
return view('view', compact('array));
// blade view
@if (isset($array) && !empty($array))
@foreach ($array as $key => $data)
<tr>
@if (!empty($data) && !is_numeric($key))
<td>{{ $key }}:</td>
<td>{{ $data[$key] }}</td>
@else
<td>{{ $key }}:</td>
<td>keine Angabe.</td>
@endif
</tr>
@endforeach
@endif
我收到错误Illegal string offset 'absender'
,但我真的不明白为什么,我已经在控制器中对其进行了解码。还是我必须在视图中再次 对其进行解码?
我很困惑。
答案 0 :(得分:1)
$ data [$ key]是一个问题。
遍历循环时,
$ key =“弃权”,
$ data =“ Maxim Ivan”
在刀片中,您将代码编写为$ data [$ key],试图找出“ Maxim Ivan”为数组,其键为“ absender”。
您的情况不正确!
您可以在此行之前检查数据是否为数组:
is_array($ data);
如果返回true,则通过再次循环以获取所需值来处理数组大小写,如果返回false,则直接打印$ data。
希望它可以解决您的问题!