即使我已经在控制器中解码了数组,字符串偏移量仍然非法?

时间:2019-05-23 09:26:58

标签: php arrays json laravel view

我从看起来像以下示例的形式中得到了一个数组:

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',但我真的不明白为什么,我已经在控制器中对其进行了解码。还是我必须在视图中再次 对其进行解码?

我很困惑。

1 个答案:

答案 0 :(得分:1)

$ data [$ key]是一个问题。

遍历循环时,

  

$ key =“弃权”,

     

$ data =“ Maxim Ivan”

在刀片中,您将代码编写为$ data [$ key],试图找出“ Maxim Ivan”为数组,其键为“ absender”。

您的情况不正确!

您可以在此行之前检查数据是否为数组:

  

is_array($ data);

如果返回true,则通过再次循环以获取所需值来处理数组大小写,如果返回false,则直接打印$ data。

希望它可以解决您的问题!