【问题标题】:Laravel 4 - foreach in foreachLaravel 4 - foreach中的foreach
【发布时间】:2014-10-04 20:24:09
【问题描述】:

我正在使用@foreach 显示一些内容。但是,如果此数据与来自另一个 @foreach 的任何数据匹配,我想以不同的方式显示该内容...

这是我的代码:

@foreach($todasactividades as $a)
    <div class="marco-cabecera">

            @foreach($actividades as $activ)
                @if($a->id == $activ->id)
                <?php $bandera = true; ?>

                @elseif($a->id != $activ->id)
                <?php $bandera = false; ?>

                    @if($bandera)
                        {{ $a->actividad }}
                    @elseif(!$bandera)
                        {{ $a->actividad }} Something different!!
                    @endif

                @endif 
            @endforeach
    @endforeach

我尝试了一些不同的东西,所以现在我认为我的代码是一团糟......

有人知道我该如何解决吗?

提前致谢!

【问题讨论】:

  • 在评估模板中的结果之前,您应该将两个数据源放在一起。这将使模板代码更容易,并从中删除业务逻辑,将其移动到更适合的位置。

标签: php foreach laravel-4 blade


【解决方案1】:

我已经用这种方法解决了这种情况……

@foreach($todasactividades as $a)   
        <?php $bandera = 0 ?>
        @foreach($actividades as $activ)
            @if($a->id == $activ->id) 
                <?php $bandera++ ?>
            @endif
        @endforeach
        @if($bandera == 0)
            <div class="marco-fondo-blanco">
            {{ $a->actividad }}
            </div>
        @else 
            <div class="marco-fondo-gris">
            {{ $a->actividad }}
            </div>
        @endif
@endforeach

【讨论】:

    【解决方案2】:

    这会清理您的代码并修复一些逻辑问题。

    @foreach($todasactividades as $a)
        <div class="marco-cabecera">
                @foreach($actividades as $activ)
                    @if($a->id == $activ->id)
                        {{ $a->actividad }}
                    @else
                        {{ $a->actividad }} Something different!!
                    @endif 
                @endforeach
        </div> 
    @endforeach
    

    【讨论】:

      【解决方案3】:

      不要在彼此内部进行这些循环。做一个查找数组

      $activities = array();
      @foreach($todasactividades as $a) {
          $activities[$a->id] = $a->id;
      }
      

      然后制作您的主循环并检查您的活动是否已设置

          <div class="marco-cabecera">
          @foreach($actividades as $activ)
              @if(isset($activities[$activ->id]))
                  {{ $a->actividad }}
              @else
                  {{ $a->actividad }} Something different!!
              @endif
          @endforeach
          </div>
      

      【讨论】:

        【解决方案4】:

        您可以尝试以下操作,无需为此使用@if&lt;?php 标签或其他变量):

        @foreach($todasactividades as $a)
            <div class="marco-cabecera">
                @foreach($actividades as $activ)
                    {{ $a->actividad }} 
                    {{ $a->id != $activ->id ? 'Something different!!' : '' }}
                @endforeach
            </div>
        @endforeach
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-06-20
          • 2014-01-03
          • 1970-01-01
          • 2018-02-17
          • 2015-07-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多