Указание метки времени для каждой группы записей с использованием foreach - PullRequest
1 голос
/ 17 октября 2019

Если у меня 20 строк, каждые 5 строк имеют метку времени создания в другом часе. (например, 5 строк, созданных в 16:00, следующие 5 - в 17:00 и т. д.). Я хочу создать foreach для отображения 20 строк, но в верхней части каждых 5 строк я хочу указать, что они принадлежат 4PM или 5 PM и т. Д., Что является отметкой времени в БД. Я просто хочу узнать, как это сделать.

Например, следующий запрос принесет 20 строк, где каждые 5 строк будут иметь разную временную метку:


      $fwinners2 = Answer::where('ttype',$id)
                  ->where('qrank',2)             
                  ->orderby('rank', 'asc') 
                  ->get(); 

это пяток в клинке:

@foreach($fwin2 as $fwin2)

    <div>
     <a>{{$fwin2->body}}</a>

    </div>


@endforeach

Ответы [ 2 ]

2 голосов
/ 17 октября 2019

В чистом PHP что-то вроде этого могло бы сработать (при условии, что строки отсортированы по отметке времени, а $row['timestamp'] - это отметка времени unix, в противном случае оберните ее в strtotime или конвертируйте в отметку времени unix другим способом):

<?php

// ... select rows from DB here

$currentHour = null;

foreach ($rows as $row){

  // get current row's hour and am/pm, and check if its different than previous, if yes, echo it

  $rowHour = date('h A',$row['timestamp']);
  if ($rowHour !== $currentHour){
    echo $rowHour;
    $currentHour = $rowHour;
  }

  // display row here

}
1 голос
/ 17 октября 2019

Предполагая, что дата является меткой времени Unix, вы можете использовать вывод date("G") в качестве ключей для вашего массива. Это вернет 24-часовой формат часа без начальных нулей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...