Многомерный массив Laravel

Я новичок в laravel, и я пытаюсь просмотреть этот многомерный массив в представлении шаблона лезвия, но не могу получить элементы. Я пытался использовать вложенный foreach, но это не работает. Я не знаю, что еще делать. Пожалуйста помоги

Array
(
[2] => Illuminate\Support\Collection Object
    (
        [items:protected] => Array
            (
            )

    )

[3] => Illuminate\Support\Collection Object
    (
        [items:protected] => Array
            (
                [0] => stdClass Object
                    (
                        [ActivityID] => 1
                        [WaiverID] => 3
                        [ProgramID] => 1
                        [ActivityName] => Waiver3 Activity 1
                        [WaiverName] => Waiver 3
                        [ID] => 3
                        [WaiverDescription] => 
                        [ProgramID] => 1
                    )

                [1] => stdClass Object
                    (
                        [ActivityID] => 2
                        [WaiverID] => 3
                        [ProgramID] => 1
                        [ActivityName] => Waiver3 Activity 2
                        [WaiverName] => Waiver 3
                        [ID] => 3
                        [WaiverDescription] => 
                        [ProgramID] => 1
                    )

                [2] => stdClass Object
                    (
                        [ActivityID] => 3
                        [WaiverID] => 3
                        [ProgramID] => 1
                        [ActivityName] => Waiver3 Activity 3
                        [WaiverName] => Waiver 3
                        [ID] => 3
                        [WaiverDescription] => 
                        [ProgramID] => 1
                    )

            )

    )

)

Когда я делаю foreach, как это

@foreach ($waiverActivityforTable as$waiverActivityforTableValue)           
    {{ $waiverActivityforTableValue }}
@endforeach

Я получил:

[] [] [{"ActivityID":1,"WaiverID":3,"PHAProgramID":1,"ActivityName":"Waiver3 
Activity 1","HCVWaiverName":"Waiver 
3","ID":3,"HCVWaiverDescription":null,"phaProgramID":1},
{"ActivityID":2,"WaiverID":3,"PHAProgramID":1,"ActivityName":"Waiver3 
Activity 2","HCVWaiverName":"Waiver 
3","ID":3,"HCVWaiverDescription":null,"phaProgramID":1},
{"ActivityID":3,"WaiverID":3,"PHAProgramID":1,"ActivityName":"Waiver3 
Activity 3","HCVWaiverName":"Waiver 
3","ID":3,"HCVWaiverDescription":null,"phaProgramID":1}] 

Усталый вложенный foreach: я пробовал:

    @foreach ($waiverActivityforTable as $waiverActivityforTableValue)
        @foreach ($waiverActivityforTableValue as $test)
            {{ $test }}
        @endforeach
    @endforeach

но я получаю сообщение об ошибке: htmlspecialchars() ожидает, что параметр 1 будет строкой, заданный объект


person user3715910    schedule 12.01.2018    source источник
comment
Пожалуйста, покажите, как вы получаете данные и чего именно вы пытаетесь достичь.   -  person Alexey Mezenin    schedule 12.01.2018
comment
Я создал многомерный массив в контроллере, и теперь мне нужно получить к нему доступ и отобразить его в представлении. Добавлены некоторые правки для уточнения   -  person user3715910    schedule 12.01.2018
comment
Вам нужны вложенные циклы для перебора всех элементов многомерного массива. $waiverActivityforTableValue содержит другой массив объектов.   -  person Cy Rossignol    schedule 12.01.2018
comment
Я пробовал вложенный foreach, но получаю сообщение об ошибке. я добавил выше   -  person user3715910    schedule 12.01.2018


Ответы (2)


Похоже, что вложенный многомерный массив может быть пустым, проверьте его, прежде чем повторять его

@if(is_array($waiverActivityforTable)
     @foreach ($waiverActivityforTable as $waiverActivityforTableValue)
      @endif
          @if(is_array($waiverActivityforTableValue)
            @foreach ($waiverActivityforTableValue as $test)
             @endif
              @isset($test)
                {{ $test }}
                 @endisset
            @endforeach
        @endforeach

Конкретная проверка для is_array и isset может отличаться в зависимости от ваших данных.

При этом многомерный массив, который вы пытаетесь проанализировать, должен был быть лучше инициализирован.

person Dhiraj    schedule 12.01.2018

Используйте метод Collection::toArray для преобразования коллекции в простой массив PHP:

 @foreach ($waiverActivityforTable->toArray() as $waiverActivityforTableValue)
                                  ^^^^^^^^^^^
    @foreach ($waiverActivityforTableValue as $test)
        {{ $test }}
    @endforeach
@endforeach
person YouneL    schedule 12.01.2018