显示依赖于差异数组名称的数组成员



我通过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集合的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

您可以使用简单的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;
}

演示

输出:

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

试试

@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

最新更新