我由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中进行转换
答案 0 :(得分: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
答案 1 :(得分:0)
您可以像下面一样使用简单的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>
答案 2 :(得分:0)
尝试
@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