Laravel如何使用foreach将数据水平放入三列

I am using laravel-dompdf to create PDF file. I want to use foreach loop to put data horizontally into three columns. It is not easy.

$items = ['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'ffff', 'gggg', 'hhhh', 'iiii'];

enter image description here

<table style="width:100%">

@foreach($items as $key => $item)

  <tr>

  @if($key % 2 == 0)<td>{{ $item }}</td>@endif

  @if($key % 2 != 0)<td>{{ $item }}</td>@endif


  </tr>

@endforeach

</table>

Use this code:

@foreach($data as $key => $item)

    @if ($key % 3 == 0)
        <tr>
    @endif

    <td>{{ $item }}</td>

    @if (($key + 1) % 3 == 0)
        </tr>
    @endif

@endforeach

@if (($key + 1) % 3 != 0)
    </tr>
@endif

You have to:

  • Start with a <tr> tag (or every 3 records)
  • Close <tr> tag when you processed 3 records
  • After the loop you must check if the last <tr> tag has been closed, otherwise close it

You can use this snippet,

<table style="width:100%">
    @foreach($items as $key => $item)
        @if($key % 3 == 0) <!-- if index % 3 is 0 then create tr -->
        <tr>
        @endif
            <td>{{$item}}</td>
        @if(($key+1) % 3 == 0) <!-- if index + 1 % 3 is 0 then close tr -->
        </tr>
        @endif
    @endforeach
    @if(count($items) % 3 != 0)
        </tr>
    @endif
</table>

Try this

<table style="width:100%">
    <?php $i = 0; ?>
    @foreach($items as $key => $item)
        @if($i == 2)
        <tr>
        @endif
            <td>{{$item}}</td>
        @if($i == 2)
            <?php $i = 0; ?> 
        </tr>
        @endif
       <?php $i++; ?>
    @endforeach
</table>