php - 将相同的键组合在一个数组中并在 smarty 中打印
问题描述
我$product.features
在 PrestaShop 1.7 中有数组。
这是数组中的示例数据。$product.features.name: $product.features.value
width: 100 m
method: Nail Down
method: Main Floor
Warranty: 25 years
Color: Red
Color: Blue
我想将上述数据打印为
Width: 100m
method: Nail Down, Main Floor
Warranty: 25 years
Color: Red, Blue
这是我的聪明代码
{foreach from=$product.features item=feature}
<div class="col-md-3 col-sm-6 col-xs-12">
<div class="name">{$feature.name}</div>
</div>
<div class="col-md-3 col-sm-6 col-xs-12">
<div class="value flex_child">{$feature.value}</div>
</div>
{/foreach}
解决方案
一种选择是准备特征数组以循环键和值。
例如,使用array_reduce和explode返回一个数组,其中键是 之前的部分,:
值是内爆结果,并,
作为分隔符:
$features = [
"width with: 100 m",
"method: Nail Down",
"method: Main Floor",
"Warranty: 25 years",
"Color: Red",
"Color: Blue"
];
$features = array_reduce($features, function($carry, $item){
$parts = explode(":", $item);
$carry[$parts[0]][] = $parts[1];
return $carry;
});
foreach ($features as $key => $value) {
echo "$key: " . implode(',', $value) . PHP_EOL;
}
输出
width: 100 m
method: Nail Down, Main Floor
Warranty: 25 years
Color: Red, Blue
看一个PHP 演示
推荐阅读
- visual-studio - 指定的 LocalDB 实例名称无效:能够创建迁移但不能运行它们
- javascript - 将 Zebra 浏览器打印绑定到 Vue 2.0
- python - 我怎样才能从较小的数量到最大的列表数量?
- kubernetes - 如何根据 GPU 指标扩展 Azure 的 Kubernetes 服务 (AKS)?
- javascript - 从日期字符串Javascript获取月份数
- javascript - 当鼠标悬停在具有绝对位置的按钮上时滚动内容(按钮应保持可点击状态)
- c++ - 我应该如何编写一个复制构造函数来初始化另一个对象?
- javascript - 在 javascript 中从 2 个列表创建字典
- avaudioengine - 不为连续安排的文件调用 AVAudioPlayerNode 完成回调
- python-3.x - 从熊猫数据框中删除特定行