【问题标题】:Merge multidimensional array having the same keyname [duplicate]合并具有相同键名的多维数组[重复]
【发布时间】:2020-12-21 23:52:39
【问题描述】:

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

代码如下:

$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 的值。

或者这个

姓名:保罗、史蒂夫、约翰、安德鲁

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

【问题讨论】:

  • @Nick,你为什么要把我重定向到一个完全不同的完全令人困惑的问题。我已经浏览了链接,但我不明白那里的任何东西。请我需要看到有人回答我的问题
  • 您也可以回答我的问题或向我展示某人放弃的答案。这真是令人沮丧。
  • 实际上这是我的答案,我删除了它,因为我觉得这个问题是重复的。我已取消删除答案,看看你的想法。
  • 还请注意,我更改了重复的目标 - 我认为它比最初关闭的问题要好得多。再次,请看一下,让我知道您的想法?
  • 谢谢尼克。我真的很感激。实际上我想要的是它以表格格式打印,但由于我很难在 Stackflow 编辑器上显示表格,我决定采用简单的表格。再次感谢您重新打开它

标签: php arrays multidimensional-array


【解决方案1】:

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

Demo on 3v4l.org

【讨论】:

  • @Prince 实际上我认为表格的方向不正确,数据是水平的而不是垂直的
  • 是的。我只是在我的代码上修改了它。但你的回答是我问题的解决方案。我刚刚修改了您的表格输出以获得我正在寻找的完美表格。谢谢
猜你喜欢
  • 1970-01-01
  • 2016-01-19
  • 1970-01-01
  • 1970-01-01
  • 2011-08-18
  • 1970-01-01
  • 2018-12-05
  • 2013-09-18
相关资源
最近更新 更多