【问题标题】:limit array member dependent on different array and count限制数组成员依赖于不同的数组和计数
【发布时间】:2019-11-27 20:21:28
【问题描述】:

我通过 laravel 创建了一个网站,我想显示类别和相关产品名称。

我有两个数组,像这样

$category  = [
    '1' => 'cat1',
    '2' => 'cat2'
];

$product = [
    '0' => array(
     'name' => 'product1',
     'category_id' => '2'
),
    '1' => array(
     'name' => 'product2',
     'category_id' => '2'
),
    '2' => array(
     'name' => 'product3',
     'category_id' => '2'
),
    '3' => array(
     'name' => 'product4',
     'category_id' => '1'
),
    '4' => array(
     'name' => 'product5',
     'category_id' => '1'
),
    '5' => array(
     'name' => 'product6',
     'category_id' => '2'
),
    '6' => array(
     'name' => 'product7',
     'category_id' => '2'

]; 

我可以这样展示他们


<h3>cat1</h3>
<p>product4</p>
<p>product5</p> 
<hr>
<hr> 
<h3>cat2</h3>
<p>product1</p>
<p>product2</p>
<p>product3</p>
<p>product6</p> 
<p>product7</p> 

通过此代码


// controller


public function someMethod(){
    $category  = [
        '1' => 'cat1',
        '2' => 'cat2'
    ];

    $product = [
        '0' => array(
         'name' => 'product1',
         'category_id' => '2'
    ),
        '1' => array(
         'name' => 'product2',
         'category_id' => '2'
    ),
        '2' => array(
         'name' => 'product3',
         'category_id' => '2'
    ),
        '3' => array(
         'name' => 'product4',
         'category_id' => '1'
    ),
        '4' => array(
         'name' => 'product5',
         'category_id' => '1'
    ),
        '5' => array(
         'name' => 'product6',
         'category_id' => '2'
    )]; 

    $category_collection = collect($product)->groupBy('category_id')->toArray();

    return view('your_blade_name',compact('category_collection','category'));


// view


@foreach($category_collection as $category_id => $data)
    <h3>{{ $category[$category_id] }}</h3>
    @foreach($data as $current_data)
        <p>{{ $current_data['name'] }}</p>
    @endforeach
<hr>
<hr> 
@endforeach
}

我无法限制此产品。我的代码在该部分中显示了所有具有父类别的产品。

我想限制它们,使产品数量永远不会超过 4 个。

如果你可以写 laravel 代码但你不能只写 php 代码

【问题讨论】:

  • 你为实现目标做了什么?
  • 我只是创建一个控制器并查看并插入代码

标签: php arrays laravel


【解决方案1】:

您可以在某些条件下使用此@break。这也很有帮助https://laravel.com/docs/5.8/blade#the-loop-variable

@foreach($category_collection as $category_id => $data)
    <h3>{{ $category[$category_id] }}</h3>
    @foreach($data as $current_data)
        @if($loop->iteration > 5) // or other logic
            @break
        @endif
        <p>{{ $current_data['name'] }}</p>
    @endforeach
    <hr>
    <hr>
@endforeach

【讨论】:

    【解决方案2】:

    这将有效。

    foreach($category as $ck => $catval){
        foreach($product as $val){   
          if($val['category_id'] == $ck){
            $array[$catval][] =  $val;
          }
        }
      }
      foreach($array as $k => $value){
        echo '<h3>'.$k.'</h3>';
        if(count($value) > 0){
          foreach($value as $productval){ 
            echo '<p>'.$productval['name'].'</p>';
          }
        }
      }
    

    输出:

    cat1
    product4
    
    product5
    
    cat2
    product1
    
    product2
    
    product3
    
    product6
    
    product7
    

    【讨论】:

    • 输出不限。此外,这是重复的答案。
    猜你喜欢
    • 2020-01-28
    • 2020-03-22
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    • 2013-03-30
    相关资源
    最近更新 更多