【问题标题】:How to count the total of nested foreach in first row in laravel blade?如何计算 laravel 刀片第一行中嵌套 foreach 的总数?
【发布时间】:2020-01-25 06:51:52
【问题描述】:

我的数据集和编码如下。

[  
   {  
      "color":[  
         {  
            "id":1,
            "color":"yellow"
         },
         {  
            "id":2,
            "color":"red"
         }
      ]
   },
   {  
      "color":[  
         {  
            "id":3,
            "color":"blue"
         },
         {  
            "id":4,
            "color":"green"
         }
      ]
   }
]

@foreach ($items as $item)
    @foreach($item->color as $color)
       <p>{{$color->color}}</p>
    @endforeach
@endforeach

我想要什么:

黄色 1/4

红色 2/4

蓝色 3/4

绿色 4/4

如何计算每一行的总数?

【问题讨论】:

  • 如果单独计算序列呢?

标签: laravel foreach


【解决方案1】:

首先你需要一个数组:

@php
    $color_counts = array();
@endphp

比在 for 循环中你可以计算颜色@foreach ($items as $item)

 @foreach($item->color as $color)
      @php
        if(isset($color_counts[$color->color]) && $color_counts[$color->color]!=null){
          $color_counts[$color->color]['count'] += 1;
        }
        else {
          $color_counts[$color->color]['count'] = 1;
          $color_counts[$color->color]['color_name'] = $color->color;
        }
      @endphp
    @endforeach
@endforeach

现在您可以在$color_counts 数组中获取颜色及其计数。

注意:您可以在控制器中执行此操作并将其传递给视图

【讨论】:

    【解决方案2】:

    你可以在 Laravel 中收集计数方法

    $collection = collect([1, 2, 3, 4]);
    
    $collection->count();
    

    这样 有关更多信息,请点击此链接: https://laravel.com/docs/5.8/collections#method-count

    【讨论】:

      【解决方案3】:

      我创建了一个类似的 JSON 代码,只是为了向您展示如何使其工作。

      [{"id":1,"color":"blue"},{"id":2,"color":"red"},{"id":3,"color":"red"},{"id":4,"color":"green"},{"id":5,"color":"red"},{"id":6,"color":"blue"}]
      
          $colors = Color::all(); // Model contains 6 random colors
          $countAllColors = count($colors);
          $colorNames = $colors->countBy('color');
          foreach ($colorNames->all() as $key => $value) {
              $values = $key . $value . '/' . $countAllColors . "\n";
              echo $values; // output will be: blue2/6 red3/6 green1/6
          }
      

      您可能注意到我使用countby 方法来查看我们重复了多少颜色item in the array

      但是,如果您想在blade 模板中执行此操作,只需复制下面的代码并将其粘贴到您的刀片模板中

      @php
       $colors = '[{"id":1,"color":"blue"},{"id":2,"color":"red"},{"id":3,"color":"red"},{"id":4,"color":"green"},{"id":5,"color":"red"},{"id":6,"color":"blue"}]';
       $colors = json_decode($colors, true);
       $colors = collect($colors);
       $countAllColors = count($colors);
       $colorNames = $colors->countBy('color');
      @endphp
      
      <div>
          @foreach ($colorNames->all() as $key => $value)
             <b> {{ $key . $value . '/' . $countAllColors .'   ' }} </b> <br>
          @endforeach
      </div>
      
      

      输出

      蓝色2/6 红3/6 绿色1/6

      对于嵌套问题,您可能想看看这个pulck 方法。

      希望对你有用

      【讨论】:

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