如何将结果分成 3 列
How to chunk results into 3 columns
我有一组结果(例如 [1,2,3,4,5,6,7,8,9,10,11])。
我想显示为 1 行 3 列
1|5|9
2|6|10
3|7|11
4|8|
我得到的是 1 行 4 列
1|4|7
2|5|8
3|6|9
10|
11|
直到我添加第 12 个 object 然后我得到 1 行 3 列
1|5|9
2|6|10
3|7|11
4|8|12
我在 blade 模板中的代码
<!-- partials/tables/table_list.blade.php -->
@section('tables')
<?php $chunkSize = floor(count($tables) / 3); ?>
<section id="tables-overview">
<div class="row">
@foreach ($tables->chunk($chunkSize , 1) as $chunk)
<div class="col-md-4">
@include('partials.tables.table_chunk')
</div>
@endforeach
</div>
</section>
@endsection
<!-- partials/tables/table_chunk.blade.php -->
<table class="table table-responsive">
<thead>
<tr>
<th class="text-center">@lang('table.identifier')</th>
<th class="text-center">@lang('table.property')</th>
<th class="text-center">
@permission('manage-tables')
<a href="{{ route('CreateTable') }}">@lang('action.create')</a>
@endpermission
</th>
</tr>
</thead>
<tbody>
@foreach ($chunk as $table)
<tr>
<td class="text-center">{{ $table->getId() }}</td>
<td class="text-center">{{ $table->getProperty() }}</td>
<td class="text-center">
@permission('manage-tables')
<a class="btn btn-primary" href="{{ route('UpdateTable', ['id' => $table->getId()]) }}">@lang('action.update')</a>
@endpermission
</td>
</tr>
@endforeach
</tbody>
</table>
当 $tables 的数量可以除以 3(我想要的列数)时,我得到 3 个块。如果不是,我得到 3 个块 + 剩余的 1 或 2 objects,它们都放在第 4 列中。我可以将它们水平放置 here,但我发现这是 'odd'。阅读列表时,您先从上到下阅读,然后从左到右阅读。
更新
我还尝试按照 Huzaib Shafi 的建议使用 ceil()。但后来我得到
4 objects (funny looking)
1|3|
2|4|
5 objects (better looking)
1|3|5
2|4
这也不是我想要的 100%,但非常接近它。接下来我会尝试Homam Alhaytham的建议。
使用array_chunk。
假设您有以下数组:
[
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
];
在您的 .blade.php
文件中,您可以执行如下操作:
@section('tables')
<section id="tables-overview">
<div class="row">
@foreach (array_chunk($tables, 3) as $chunk)
<div class="col-md-4">
@foreach($chunk as $key => $value)
//@include('partials.tables.table_chunk')
// No need to include anything here
// just write your table instead of including
@endforeach
</div>
@endforeach
</div>
</section>
@endsection
当你floor
除法结果时,你得到较小的数字。
解释: floor(11/3) = 3。因此您的结果一次被分成 3 个块(导致;[3,3,3,2]),但是我们需要 [4,4,3].
所以你需要ceil
它。给你 4,这样的结果。
<?php $chunkSize = ceil(count($tables) / 3); ?>
通过获取数据库数据并使用循环示例获取 $items 后
$c=0;
echo '<div class="row">';
while(bla bla bla ..){
// counter
$c++;
echo '<div class="col-md-4">
some thing
</div>';
if(fmod($c,3)==0){
echo '</div><div class="row">';
}
}
echo '</div>';
这里我使用 fmod($c,3) 3 数字关闭你的列和 fmod return 0 如果 $c 是 6,9,12,15,18.....
我有一组结果(例如 [1,2,3,4,5,6,7,8,9,10,11])。
我想显示为 1 行 3 列
1|5|9
2|6|10
3|7|11
4|8|
我得到的是 1 行 4 列
1|4|7
2|5|8
3|6|9
10|
11|
直到我添加第 12 个 object 然后我得到 1 行 3 列
1|5|9
2|6|10
3|7|11
4|8|12
我在 blade 模板中的代码
<!-- partials/tables/table_list.blade.php -->
@section('tables')
<?php $chunkSize = floor(count($tables) / 3); ?>
<section id="tables-overview">
<div class="row">
@foreach ($tables->chunk($chunkSize , 1) as $chunk)
<div class="col-md-4">
@include('partials.tables.table_chunk')
</div>
@endforeach
</div>
</section>
@endsection
<!-- partials/tables/table_chunk.blade.php -->
<table class="table table-responsive">
<thead>
<tr>
<th class="text-center">@lang('table.identifier')</th>
<th class="text-center">@lang('table.property')</th>
<th class="text-center">
@permission('manage-tables')
<a href="{{ route('CreateTable') }}">@lang('action.create')</a>
@endpermission
</th>
</tr>
</thead>
<tbody>
@foreach ($chunk as $table)
<tr>
<td class="text-center">{{ $table->getId() }}</td>
<td class="text-center">{{ $table->getProperty() }}</td>
<td class="text-center">
@permission('manage-tables')
<a class="btn btn-primary" href="{{ route('UpdateTable', ['id' => $table->getId()]) }}">@lang('action.update')</a>
@endpermission
</td>
</tr>
@endforeach
</tbody>
</table>
当 $tables 的数量可以除以 3(我想要的列数)时,我得到 3 个块。如果不是,我得到 3 个块 + 剩余的 1 或 2 objects,它们都放在第 4 列中。我可以将它们水平放置 here,但我发现这是 'odd'。阅读列表时,您先从上到下阅读,然后从左到右阅读。
更新 我还尝试按照 Huzaib Shafi 的建议使用 ceil()。但后来我得到
4 objects (funny looking)
1|3|
2|4|
5 objects (better looking)
1|3|5
2|4
这也不是我想要的 100%,但非常接近它。接下来我会尝试Homam Alhaytham的建议。
使用array_chunk。
假设您有以下数组:
[
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
];
在您的 .blade.php
文件中,您可以执行如下操作:
@section('tables')
<section id="tables-overview">
<div class="row">
@foreach (array_chunk($tables, 3) as $chunk)
<div class="col-md-4">
@foreach($chunk as $key => $value)
//@include('partials.tables.table_chunk')
// No need to include anything here
// just write your table instead of including
@endforeach
</div>
@endforeach
</div>
</section>
@endsection
当你floor
除法结果时,你得到较小的数字。
解释: floor(11/3) = 3。因此您的结果一次被分成 3 个块(导致;[3,3,3,2]),但是我们需要 [4,4,3].
所以你需要ceil
它。给你 4,这样的结果。
<?php $chunkSize = ceil(count($tables) / 3); ?>
通过获取数据库数据并使用循环示例获取 $items 后
$c=0;
echo '<div class="row">';
while(bla bla bla ..){
// counter
$c++;
echo '<div class="col-md-4">
some thing
</div>';
if(fmod($c,3)==0){
echo '</div><div class="row">';
}
}
echo '</div>';
这里我使用 fmod($c,3) 3 数字关闭你的列和 fmod return 0 如果 $c 是 6,9,12,15,18.....