合并具有相同注释记号的多维数组



我有一个多维数组,我想在表中显示值。

这是代码:

$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 And Destination,而td是Name和Destinations的值。

或者这个

姓名:Paul、Steve、John、Andrew

目的地:伦敦、巴黎、安卡拉、科威特

您可以使用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>

3v4l.org 上的演示

最新更新