Как я могу исправить массив Foreach в array в php, чтобы вернуть результат

#php #arrays #laravel-blade

#php #массивы #laravel-blade

Вопрос:

Данные из Api после запроса

 array:1 [▼
  "id" => 1
  "name" => "test"
  "active_domain" => "https://drycleaner.com"
  "domains" => array:1 [▶]
  "rr" => array:2 [▼
    0 => array:1 [▼
      0 => array:1 [▼
        "end_at" => "2020-11-08T08:00:00.000 08:00"
      ]
    ]
    1 => array:1 [▼
      0 => array:1 [▼
        "end_at" => "2020-11-08T08:00:00.000 08:00"
      ]
    ]
  ]
]
 

php laravel blade.view

 @foreach ($store["rr"] as $key2=>$rr){
     @foreach ($rr["rss"] as key3 =>$rss)}
        <td>{{ date("d-M-y  H:i", strtotime($rss["end_at"])) }}</td>
          @endforeach
 

Неопределенная ошибка end_at. Я думаю, что это проблема с именованием столбцов foreach. Как я могу получить доступ к api, который является «end_at», и вставить в таблицу.

Комментарии:

1. где появляется ключ dssl? Не отображается в вашем выводе массива

2. Вы когда-нибудь слышали о array_combine? Я думаю, вам следует это использовать. И, как заявил другой комментатор, где появляется «dssl»?

Ответ №1:

в синтаксисе блейда вы должны закрывать каждый foreach :

 @foreach ($store["dr"] as $key2=>$dr){
    @foreach ($dr as key3 =>$dssl)}
        <td>{{ date("d-M-y  H:i", strtotime($dssl["end_at"])) }}</td>
    @endforeach
@endforeach
 

Ответ №2:

end_at ключ находится во втором массиве $dr . Вам нужно снова вызвать foreach или использовать key напрямую, например $dssl[0]["end_at"] :

 <td>{{ date("d-M-y  H:i", strtotime($dssl[0]["end_at"])) }}</td>
 

или с помощью foreach

 @foreach ($store["dr"] as $key2=>$dr){
     @foreach ($dr["dssl"] as key3 =>$dssl)}
          @foreach ($dssl as key4 =>$dss)}
        <td>{{ date("d-M-y  H:i", strtotime($dss["end_at"])) }}</td>
          @endforeach
      @endforeach
@endforeach
 

Комментарии:

1. я думаю, что не хватает одной фигурной скобки.

2. Я думаю, это правильно, какой код вы скопировали?

3. теперь он говорит undefined index: dssl, есть идеи?

4. второй.

5. вы не скопировали corectly. попробуйте показать мне свой текущий код в своем сообщении