Массив Foreach в массиве php

Я пытаюсь подключить свои массивы к foreach, но не работает

это мой Контроллер

    $start    = (new DateTime("2016-11-01"))->modify('first day of this month');
    $end      = (new DateTime("2017-02-01"))->modify('first day of next month');
    $interval = DateInterval::createFromDateString('1 month');
    $period   = new DatePeriod($start, $interval, $end);
    $result = array();

    foreach ($period as $dt) {
        $data_month = array(
            'month' => $dt->format("n"),
            'year'  => $dt->format("Y")
        );
        array_push($result, $data_month);
    }

а это мой клинок

@foreach($result as $row => $innerArray)
   @foreach($innerArray as $innerRow => $value)
   <td>{{$value->month}}</td>
   <td>{{$value->year}</td>
   @endforeach
@endforeach

результат:

Trying to get property of non-object

но если я попробую так, только первое значение в массиве ('месяц') будет зацикливаться

@foreach($result as $row => $innerArray)
   @foreach($innerArray as $innerRow => $value)
   <td>{{$value}}</td>
   @endforeach
@endforeach

результат:

looping month only

Не работает - это не проясняет ситуацию. Сообщите нам, с какой именно ошибкой вы столкнулись?

Hassaan 02.04.2018 05:36

Я рекомендую заглянуть в Carbon при работе с датами. Намного чище и веселее.

parker_codes 02.04.2018 05:38

вы должны узнать разницу между PHP Object и PHp Array, Trying to get property of non-object обычно возникает, когда вы обращаетесь к массиву со стилем объекта.

am05mhz 02.04.2018 05:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
3
63
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Попробуй это:

@foreach($result as $value)
   <td>{{ $value['month'] }}</td>
   <td>{{ $value['year'] }</td>
@endforeach

Потому что массив имеет такую ​​структуру:

Array
(
    [0] => Array
        (
            [month] => 11
            [year] => 2016
        )

    [1] => Array
        (
            [month] => 12
            [year] => 2016
        )

    [2] => Array
        (
            [month] => 1
            [year] => 2017
        )

    [3] => Array
        (
            [month] => 2
            [year] => 2017
        )

)

попробуй это

@foreach($result as $result1)
  {{ $result1['month'] }}
@endforeach

Логика контроллера

    $start    = (new DateTime("2016-11-01"))->modify('first day of this month');
    $end      = (new DateTime("2017-02-01"))->modify('first day of next month');
    $interval = DateInterval::createFromDateString('1 month');
    $period   = new DatePeriod($start, $interval, $end);
    $result = array();

    foreach ($period as $dt) {
        $result[] = array(
            'month' => $dt->format("n"),
            'year'  => $dt->format("Y")
        );
    }

Файл Blade

@foreach($result as $row => $data) 
    <td>{{$data['month']}}</td>
    <td>{{$data['year']}}</td>
@endforeach

Другие вопросы по теме