как настроить использование таблицы rowspan в схеме foreach в коде PHP - PullRequest
1 голос
/ 14 июля 2020

сейчас я делаю PHP код для отображения отчета с использованием таблицы с foreach. но я все еще не понимаю, как установить rowspan с помощью foreach. Я хочу, чтобы дисплей выглядел как это изображение

enter image description here

if i do it manualy, the HTML code should be like this.

 
    
      
        IMAGE
        Name
        Accessories
        Qty
        Action
      
    
    
      
        
image Иоанн Кабель 1 Удалить стандарт 3 image Джеймс экран 1 Удалить ЦП 1 память 2

, но как это реализовать с помощью foreach. вот что я реализую.

<table width="100%" >
    <thead>
        <tr>
          <th >Image</th>
          <th >Name</th>
          <th >Accessories</th>
          <th >Qty</th>
          <th >Action</th>
        </tr>
    </thead>
    <tbody>
        @foreach ($reports as $report)
        <tr>
            <td class="text-center"><img src="{{ $report->image }}"></td>
            <td class="text-center">{{ $report->name }}</td>
            <td class="text-center">{{ $report->accessories }}</td>
            <td class="text-center">{{ $report->qty }}</td>
            <td class="text-center"><button>delete</button></td>
        </tr>
        @endforeach
    </tbody>
</table>

Я хочу, чтобы номер строки на «изображении» и «имя» строки Отрегулировал количество данных «принадлежностей». помогите пожалуйста.

1 Ответ

1 голос
/ 14 июля 2020

Создайте новый массив, в котором вы группируете все строки с одинаковым именем. Затем вы можете получить длину вложенного массива accessories, чтобы вы знали правильное значение rowspan

$grouped_reports = [];
$last_name = null;
$group = null;
foreach ($reports as $report) {
    if ($report->name != $last_name) {
        if ($group) {
            $grouped_reports[] = $group;
        }
        $group = ['name' => $report->name, 'image' => $report->image, 'accessories' = []];
    }
    $group['accessories'][] = ['name' => $report->accessories, 'qty' => $report->qty];
}
// Add last group to $grouped_reports
if ($group) {
    $grouped_reports[] = $group;
}

...
<tbody>
@foreach ($grouped_reports as $report) {
    @$rowspan = count($report['accessories']);
    <tr>
        <td class="text-center" rowspan="{{ $rowspan }}"><img src="{{ $report['image'] }}"></td>
        <td class="text-center" rowspan="{{ $rowspan }}">{{ $report['name'] }}</td>
        <td class="text-center">{{ $report['accessories'][0]['name'] }}</td>
        <td class="text-center">{{ $report['accessories'][0]['qty'] }}</td>
        <td class="text-center" rowspan="{{ $rowspan }}"><button>delete</button></td>
    </tr>
    @for ($i = 1; $i < $rowspan; $i++) {
    <tr>
        <td class="text-center">{{ $report['accessories'][$i]['name'] }}</td>
        <td class="text-center">{{ $report['accessories'][$i]['qty'] }}</td>
    </tr>
    @endfor
    @endforeach
</tbody>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...