You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 }}

修复你的余数计算问题

你的代码里有两个关键问题导致无法正确获取余数:

  1. $i被重复初始化:你把@php $i=1 @endphp放在了@foreach循环内部,这意味着每次循环都会把$i重置为1,永远不会更新为余数结果。
  2. 未将余数赋值给$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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:46:26