Laravel Blade中实现+-*/%运算及修复取余计算异常问题
在Laravel Blade模板中进行算术运算的方法
Blade模板支持直接在输出标签{{ }}内书写算术表达式,常用运算的写法如下:
- 加法:
{{ $num1 + $num2 }} - 减法:
{{ $num1 - $num2 }} - 乘法:
{{ $num1 * $num2 }} - 除法:
{{ $num1 / $num2 }}(注意PHP中整数除法会返回浮点数,若需整数结果可使用intdiv($num1, $num2)) - 取余:
{{ $num1 % $num2 }}
如果是更复杂的运算,推荐使用@php块先计算再赋值,例如:
@php $total = ($price * $quantity) - $discount; @endphp {{ $total }}
修复你的余数计算问题
你的代码里有两个关键问题导致无法正确获取余数:
$i被重复初始化:你把@php $i=1 @endphp放在了@foreach循环内部,这意味着每次循环都会把$i重置为1,永远不会更新为余数结果。- 未将余数赋值给
$i:你只是输出了{{$loop->iteration}}%3,但并没有把这个运算结果赋值给$i,所以$i始终是1。
另外还有个小错误:循环变量是$searchall,但你在输出id时写的是$search_all,变量名不一致会导致报错。
下面是修复后的完整代码:
@php $i = 0; @endphp <!-- 把初始化移到循环外面,避免重复重置 --> @foreach ($searchalls as $searchall) @php $i = $loop->iteration % 3; @endphp {{ $i }} = {{ $loop->iteration }}%3 <!-- 现在会输出正确的余数了 --> <!-- 当循环到第1、4、7...个元素时,开启新的row --> @if($loop->iteration % 3 == 1) <div class="row clearfix"> @endif <div class="col-md-4 column"> <h2>{{ $searchall->id }} Heading</h2> <!-- 修正变量名 --> <p>once OK.</p> <p><a class="btn" href="#">View details »</a></p> </div> <!-- 每3个元素或循环最后一个元素时,闭合row --> @if($loop->iteration % 3 == 0 || $loop->last) </div> @endif @endforeach
解释一下修改点:
- 把
$i的初始化移到@foreach外面,确保只初始化一次。 - 在循环内将
$loop->iteration % 3的结果赋值给$i,这样$i就会随循环更新。 - 修正了变量名
$search_all为$searchall,避免变量未定义错误。 - 补充了闭合
row的逻辑,确保每3个元素后或者循环结束时正确关闭容器,避免HTML结构错误。
内容的提问来源于stack exchange,提问作者robspin
相关产品推荐
相关产品推荐

