Проблема Laravel с циклом @foreach в представлении блейда

#php #laravel #foreach #laravel-blade

#php #laravel #foreach #laravel-блейд

Вопрос:

Из Ziparchive требуется name и size файлов в Zip-файле. Проблема для меня в том, как можно добавить name и size в таблицу в представлении блейда.

controller :

     $ziparchive = new ZipArchive(); 
    $ziparchive->open($fileName);
    $filenames = [];
    $filesizes = [];
    if(!empty($ziparchive)){         
        for( $i = 0; $i < $ziparchive->numFiles; $i   ){ 
            $stat = $ziparchive->statIndex( $i ); 
            $filenames[]= basename( $stat['name'] ) . PHP_EOL;
            $filesizes[]= basename( $stat['size'] );

    return view('view',["filenames"=>$filenames,"filesizes"=>$filesizes]);
  

dd($filenames, $filesizes) возвращает два массива:

  1.png
 2.png
 3.png
 4.png

 10
 12
 13
 796
  

в view.blade.php

 @foreach($filenames as $filename )
    @foreach($filesizes as $filesize)
        <tr>
            <td>{{$filename}}</td>
            <td>{{$filesize}}</td>
        </tr>
    @endforeach
@endforeach
  

верните в таблицу это:

  1.png 10
 1.png 12
 1.png 13
 1.png 796
 2.png 10
 2.png 12
 2.png 13
 ....
  

чего мне не хватает?

Ответ №1:

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

 @foreach($filenames as $key => $filename )
    <tr>
        <td>{{ $filename }}</td>
        <td>{{ $filesizes[$key] ?? "" }}</td>
    </tr>
@endforeach
  

поскольку оба $filenames и $filesizes один и тот же индекс имеют одинаковое значение, поэтому вы можете использовать index для получения значения из $filesizes[index]