php - 根据数组数据动态生成手风琴
问题描述
我正在阅读 mysql 以提取给定特定 ID 的一组数据,这会向我的脚本返回一个数组。那是容易的一点。这里的示例存储在一个名为 $history 的数组中
Array ( [serviceID] => 1 [VesselTag] => 1000001 [component] => Engine 1 [item] => Caterpillar [serial] => 123456 [comment] => Something in here like this [parts] => Oil [lat] => 50.38313740 [longitude] => -4.03461360 [engineer] => 27 [date] => 2019-05-30 19:25:56 )
Array ( [serviceID] => 2 [VesselTag] => 1000001 [component] => Engine 2 [item] => Caterpillar [serial] => 677889 [comment] => Did a full overhaul of top section replaced everything [parts] => everything [lat] => 50.38309180 [longitude] => -4.03468820 [engineer] => 27 [date] => 2019-05-30 19:27:29 )
Array ( [serviceID] => 3 [VesselTag] => 1000001 [component] => Engine 1 [item] => Caterpillar [serial] => 123456 [comment] => This seems quite usable [parts] => Oil [lat] => 50.38345892 [longitude] => -4.03475649 [engineer] => 27 [date] => 2019-05-30 19:29:23 )
我现在想做的是根据列表中的 [component] 生成一个手风琴'card-body' 对卡片进行分组。有时数组可能有更多或更少,因此将显示 0 到 7 张卡片 [组件]。
<div class="card">
<div class="card-header">
<a class="card-link" data-toggle="collapse" href="#collapseOne">
$array[Component] **<--- Guessing this would be from a ```foreach``` or ```while``` loop???**
</a>
</div>
<div id="collapseOne" class="collapse" data-parent="#accordion">
<div class="card-body">
<?php **THIS IS WHERE I WILL DISPLAY THE ROWS OF DATA ASSOCIATED TO THE [component] IN QUESTION ?>**
</div>
</div>
</div>
我真的很难弄清楚要使用哪个循环,并且能够通过 [组件] 来驱动它。
它在做我的头......
解决方案
在看了很长一段时间不同的文章之后,我似乎想出了一些可行的方法......我认为它相对有效,但很高兴有人告诉我其他情况......
<div id="accordion">
<?php $newArray=array();
foreach($history as $val){
$key=$val['component'];
$grouped[$key][]=$val;
}
foreach($grouped as $group){?>
<div class="card">
<div class="card-header">
<a class="card-link" data-toggle="collapse" href="#<?php echo str_replace(' ', '',$group[0]['component']); ?>">
<?php echo $group[0]['component']; ?>
</a>
</div>
<div id="<?php echo str_replace(' ', '',$group[0]['component']); ?>" class="collapse" data-parent="#accordion">
<div class="card-body">
<?php foreach ($group as $occurance){
echo $occurance['date'] . ' - ' . $occurance['comment'] . ' - ' . $occurance['parts'] . ' - ' . $occurance['engineer'];
echo '<br>';
} ?>
</div>
</div>
</div>
<?php }?>
</div>
推荐阅读
- php - php没有将json字符串转换为json数组
- python - 在mongodb中通过python api插入值
- math - 使用 Jinja2 模板语言从前缀/子网推断网络参数
- android - 从另一个片段返回后保留片段内的复选框状态
- c# - 本地化为中文会在 WPF 应用程序中禁用我的 XamMenu
- angular - Angular Cli - 找不到 Dojo 模块
- laravel - 在 Laravel 中安装 composer 包后如何在 app.php 提供程序和别名中获取路径
- node.js - 无法使用 Stripe API 创建带有时间戳的订阅
- php - 无法使用 PHP 和 PDO 更新表
- python - python中属性getter的使用