php - 合并具有相同键名的多维数组
问题描述
我有一个多维数组,我想在表格中显示这些值。
这是代码:
$attributes = [
[
"attributeName"=> "Name",
"value"=> "Paul"
],
[
"attributeName"=> "Name",
"value"=> "Steve"
],
[
"attributeName"=> "Name",
"value"=> "John"
],
[
"attributeName"=> "Name",
"value"=> "Andrew"
],
[
"attributeName"=> "Destination",
"value"=> "London"
],
[
"attributeName"=> "Destination",
"value"=> "Paris"
],
[
"attributeName"=> "Destination",
"value"=> "Ankara"
],
[
"attributeName"=> "Destination",
"value"=> "Kuwait"
],
];
我希望将输出放在一张桌子上,thead 是 Name 和 Destination,而 td 是 Name 和 Destinations 的值。
或这个
姓名:保罗、史蒂夫、约翰、安德鲁
目的地:伦敦、巴黎、安卡拉、科威特
解决方案
您可以使用array_reduce
将所有属性分组到一个输出数组中:
$output = array_reduce($attributes, function ($carry, $arr) {
$carry[$arr['attributeName']][] = $arr['value'];
return $carry;
}, array());
输出:
Array
(
[Name] => Array
(
[0] => Paul
[1] => Steve
[2] => John
[3] => Andrew
)
[Destination] => Array
(
[0] => London
[1] => Paris
[2] => Ankara
[3] => Kuwait
)
)
要将其输出为表格,您可以使用foreach
循环:
echo "<table>\n";
foreach ($output as $key => $values) {
echo "<tr><td>$key</td><td>" . implode('</td><td>', $values) . "</td></tr>\n";
}
echo '</table>';
输出:
<table>
<tr><td>Name</td><td>Paul</td><td>Steve</td><td>John</td><td>Andrew</td></tr>
<tr><td>Destination</td><td>London</td><td>Paris</td><td>Ankara</td><td>Kuwait</td></tr>
</table>
推荐阅读
- c++ - 我们可以在不使用虚函数的情况下根据它们的参数调用覆盖函数吗?
- parallel-processing - 为什么原子操作仅适用于 HLSL 计算着色器中的线程组?
- ruby-on-rails - 在入口脚本中捆绑安装和纱线安装 - Docker
- php - AJAX 将值从 js 发送到 php
- php - 如何使用 php 删除阿拉伯语文本中的特殊字符(多余的空格)?
- python - 无法在 Jupyter 笔记本中使用预装的 python 包
- python - 在 python 中解析汤
- r - 如何在类网络对象的**超图**中转换矩阵
- react-native - 将 Skype for business 应用程序与 React Native 移动应用程序深度链接
- python - Django - 如何使用 JQuery Ajax 插入多个表单数据