【问题标题】:showing array member dependent the name of difference array显示依赖于差异数组名称的数组成员
【发布时间】:2020-03-22 16:11:25
【问题描述】:

我通过 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'
)]; 

我想这样展示它

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

你必须知道我正在使用 laravel,我想用 laravel 完成这项工作,但你也可以用 PHP 编码,我想我可以在 laravel 中转换它

【问题讨论】:

  • 要在 Laravel 中做到这一点,你应该使用模型和关系。在普通 php 中,只需使用 $category 执行一个 foreach 循环,然后在该循​​环中使用 $product 进行另一个循环。

标签: php arrays laravel


【解决方案1】:

您可以将 Laravel 集合的 groupBy 用于您的用例。

在您的控制器文件中,按category_id 键分组并通过循环在刀片中渲染它们。

控制器片段:

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'));
}

刀片片段:

@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 个,我该怎么做并按字母排序
  • @aryatehran 抱歉,我没听懂。您能否将其添加为包含所有必需详细信息的新问题?
【解决方案2】:

试试

@foreach($category as $key => $cat)
  <h3>{{$cat}}</h3>
@foreach($product as $pr)
    @if($pr['category_id'] == $key)
        <p>{{$pr['name']}}</p><br>
    @endif
@endforeach
 <br>
@endforeach

【讨论】:

    【解决方案3】:

    您可以使用简单的foreach 循环如下:

    foreach($category as $ind=>$cat){
        echo "<h3>".$cat."</h3>".PHP_EOL;
        foreach($product as $row){
            if($row['category_id'] == $ind) {
                echo "<p>".$row['name']."</p>".PHP_EOL;
            }
        }
        echo "<hr><hr>".PHP_EOL;
    }
    

    Demo

    输出:

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

    【讨论】:

      猜你喜欢
      • 2020-01-28
      • 1970-01-01
      • 2015-12-06
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多