PHP: add missing keys between arrays

b03*_*per 0 php arrays merge multidimensional-array

I have following array keys values:

$arrData = array
(
    array(
        'a' => 'test',
        'c' => 1,
        'd' => 2,
        'e' => 'B'
    ),
    array(
        'c' => 1,
        'd' => 2,
        'e' => 'B'
    ),
    array(
        'b' => 'test2',
        'c' => 1,
        'd' => 2,
        'e' => 'B'
    )
);
Run Code Online (Sandbox Code Playgroud)

So here I need to merged array into single with combining missing keys with single value array. Can someone please help to get following output in single array?

$arrData = array
(
    array(
        'a' => 'test',
        'b' => 'test2',
        'c' => 1,
        'd' => 2,
        'e' => 'B'
    )
);
Run Code Online (Sandbox Code Playgroud)

Thanking in advance!

Abr*_*ver 6

只需合并它们,然后对键进行排序:

$arrData = array_merge(...$arrData);
ksort($arrData);
Run Code Online (Sandbox Code Playgroud)

代替...您可以使用:

$arrData = call_user_func_array('array_merge', $arrData);
Run Code Online (Sandbox Code Playgroud)

如果您确实希望结果是多维的,则:

$arrData = [$arraData];
//or
$arrData = array($arrData);
Run Code Online (Sandbox Code Playgroud)

  • 善用splat运算子。 (3认同)

Nic*_*ick 5

您可以使用array_reduce(或简单的foreach循环)将每个后续数组值与第一个数组值合并:

$out = array_reduce($arrData, function ($c, $v) { return array_merge($c, $v); }, array());
print_r($out);

$out = array();
foreach ($arrData as $arr) {
    $out = array_merge($out, $arr);
}
print_r($out);
Run Code Online (Sandbox Code Playgroud)

输出(对于两个示例):

Array (
  [a] => test
  [c] => 1
  [d] => 2
  [e] => B
  [b] => test2 
)
Run Code Online (Sandbox Code Playgroud)

如果要按字母顺序保留键,可以使用ksort

ksort($out);
print_r($out);

Array (
  [a] => test
  [b] => test2 
  [c] => 1
  [d] => 2
  [e] => B
)
Run Code Online (Sandbox Code Playgroud)

3v4l.org上的演示