PHP中的多维数组合并

PHP中的多维数组合并,php,arrays,Php,Arrays,请求您的帮助,关于如何合并多维关联数组,如下所示,尝试了下面的函数,每个函数都给出了不同的错误输出,所需的输出如下所示。所有数组的键[Server]名称保持不变,但值不同 功能 阵列1: 阵列2: 阵列3: 所需阵列输出 从, Vino您可以按服务器为它们编制索引,然后它们将合并到同一个密钥中: $output = array_merge(array_column($array1, null, 'Server'), array_column($arra

请求您的帮助,关于如何合并多维关联数组,如下所示,尝试了下面的函数,每个函数都给出了不同的错误输出,所需的输出如下所示。所有数组的键[Server]名称保持不变,但值不同

功能

阵列1:

阵列2:

阵列3:

所需阵列输出

从, Vino

您可以按服务器为它们编制索引,然后它们将合并到同一个密钥中:

$output = array_merge(array_column($array1, null, 'Server'),
                      array_column($array2, null, 'Server'),
                      array_column($array3, null, 'Server'));
不需要,但如果要返回整数键,请执行以下操作:

$output = array_values($output);
要添加缺少的键,您必须合并到模板数组中:

$keys = ['Server' => 0, 'Count' => 0, 'Rack' => 0, 'Node' => 0];

foreach($output as &$values) {
    $values = array_merge($keys, $values);
}    

Hi Cadaver,感谢您的帮助,使用您的代码生成的输出与预期的不一样,请参阅上面的必需数组OutputHi Cadaver,如果服务器值不同,则上面的代码可以完美工作,如果服务器值相同,则只需更新为0而不是正确的值错误输出[1]=>Array[Server]=>Server2[Count]=>4[Rack]=>1[Node]=>1[4]=>Array[Server]=>Server5[Count]=>0[Rack]=>4[Node]=>4正确输出[1]=>Array[Server]=>Server2[Count]=>0[Node]=>0[Rack]=>1[4]=>Array[Server]=>Server5[Count]=>0[Rack]=>0[Node]=>4
Array
(
    [0] => Array
        (
            [Server] => Server2
            [Node] => 1
        )

    [1] => Array
        (
            [Server] => Server5
            [Node] => 4
        )

    [2] => Array
        (
            [Server] => Server6
            [Node] => 4
        )
)
Array
(
    [0] => Array
        (
            [Server] => Server1
            [Count] => 1
            [Rack] => 0
            [Node] => 0
        )
    [1] => Array
        (
            [Server] => Server2
            [Count] => 4
            [Rack] => 1
            [Node] => 1
        )

    [2] => Array
        (
            [Server] => Server3
            [Count] => 4
            [Rack] => 0
            [Node] => 0
        )

    [3] => Array
        (
            [Server] => Server4
            [Count] => 0
            [Rack] => 4
            [Node] => 0
        )

    [4] => Array
        (
            [Server] => Server5
            [Count] => 0
            [Rack] => 4
            [Node] => 4
        )

    [5] => Array
        (
            [Server] => Server6
            [Count] => 0
            [Rack] => 0
            [Node] => 4
        )
)
$output = array_merge(array_column($array1, null, 'Server'),
                      array_column($array2, null, 'Server'),
                      array_column($array3, null, 'Server'));
$output = array_values($output);
$keys = ['Server' => 0, 'Count' => 0, 'Rack' => 0, 'Node' => 0];

foreach($output as &$values) {
    $values = array_merge($keys, $values);
}