Распечатать массив в таблицу - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть массив с данными, и я должен положить их в таблицу. Массив:

array(
 0=>1
 1=>Jon
 2=>jon@email.com
 3=>2
 4=>Doe
 5=>doe@email.com
 6=>3
 7=>Foo
 8=>foo@email.com)

Итак, заголовок таблицы:

<table>
    <head>
       <tr>
         <th>ID</th>
         <th>Name</th>
         <th>Email</th>
       </tr>
    </thead>
</table>

Если я пойду и переберу массив:

 <table>
    <thead>
       <tr>
         <th>ID</th>
         <th>Name</th>
         <th>Email</th>
       </tr>
    </thead>
    <tbody>
       @foreach($array as $data)
           <tr>
             <td>
               {{$data}}
             </td>
           </tr> 
       @endforeach
    <tbody>
</table>

Токовый выход:

Id   Name  Email
1   Jon  jon@email.com 2 Doe doe@email.com  3  Foo foo@email.com

Но мой желаемый результат:

Id   Name  Email
 1   Jon   jon@email.com
 2   Doe   doe@email.com
 3   Foo   foo@email.com

Я пытался разбить массив на массивы с помощью array_chunk (), но результат был тот же.

Я нахожусь на Laravel, но я могу пойти и с обычным PHP. Любые советы будут высоко оценены.

Ответы [ 5 ]

0 голосов
/ 14 сентября 2018

Я не очень знаком с Laravel, но я надеюсь, что следующие работы для вас.

<table>
  <thead>
    <tr>
      <th>ID</th>
      <th>Name</th>
      <th>Email</th>
    </tr>
  </thead>
    <tbody>
      $length = (int) count($array)/3;
      @for($i = 0; $i < $length; $i+=3)
        <tr>
          <td>{{$data[$i]}}</td>
          <td>{{$data[$i+1]}}</td>
          <td>{{$data[$i+2]}}</td>
        </tr> 
       @endfor
    <tbody>
</table>
0 голосов
/ 14 сентября 2018

Надеюсь, это поможет вам.

<table>
    <thead>
       <tr>
         <th>ID</th>
         <th>Name</th>
         <th>Email</th>
       </tr>
    </thead>
    <tbody>
       @for($i = 0; $i < count($array); $i= $i+3)
           <tr>
             <td>
               {{ $array[$i] }}
             </td>
             <td>
               {{ $array[$i + 1] }}
             </td>
             <td>
               {{ $array[$i + 2] }}
             </td>
           </tr> 
       @endforeach
    <tbody>
</table>
0 голосов
/ 14 сентября 2018

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

У вас нет нужных объектов для работы, поэтому здесь условие состоит в том, что после 3 итераций поступают новые данные.Таким образом, вы можете взять мод 3 и заставить его работать так:

@foreach ( $array as $key => $value )

// you have a new dataset
@if ( ($key % 3) == 0 )
<tr>
    @endif
<td>{{ $value }}</td>
@if ( ($key % 3) == 0 )
</tr>
    @endif

@endforeach

Я не тестировал этот код выше, но он должен работать.Хотя я всегда предпочел бы использовать правильный список объектов класса User или что-то еще.

РЕДАКТИРОВАТЬ: Я бы предпочел ответ @Sand Of Vega.Это лучше.

0 голосов
/ 14 сентября 2018

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

Замените ваше следующим.

 <table>
    <thead>
       <tr>
         <th>ID</th>
         <th>Name</th>
         <th>Email</th>
       </tr>
    </thead>
    <tbody>   
        <tr>
           @foreach($array as $key => $value)
               if($key % 3 == 0){
                  echo "</tr>";
                }
                echo "<td>".$value."</td>";
           @endforeach
    <tbody>
</table>
0 голосов
/ 14 сентября 2018
<tbody>
   @foreach(array_chunk($array, 3) as $data)
       <tr>
         <td>
           {{ $data[0] }}
         </td>
         <td>
           {{ $data[1] }}
         </td>
         <td>
           {{ $data[2] }}
         </td>
       </tr> 
   @endforeach
<tbody>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...