PHP在数组之间添加缺少的键

前端之家收集整理的这篇文章主要介绍了PHP在数组之间添加缺少的键前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下代码
$a = array('a' => 'some value','b' => 'some value','c' => 'some value');
$b = array('a' => 'another value','d' => 'another value','e' => 'another value','f' => 'another value');
$c = array('b' => 'some more value','x' => 'some more value','y' => 'some more value','z' => 'some more value');

$d = array($a,$b,$c);

打印$d将输出

Array
(
    [0] => Array
        (
            [a] => some value
            [b] => some value
            [c] => some value
        )

    [1] => Array
        (
            [a] => another value
            [d] => another value
            [e] => another value
            [f] => another value
        )

    [2] => Array
        (
            [b] => some more value
            [x] => some more value
            [y] => some more value
            [z] => some more value
        )

)

我将如何组合数组键并最终得到以下输出

Array
(
    [0] => Array
        (
            [a] => some value
            [b] => some value
            [c] => some value
            [d] => 
            [e] => 
            [f] => 
            [x] => 
            [y] => 
            [z] => 
        )

    [1] => Array
        (
            [a] => another value
            [b] => 
            [c] => 
            [d] => another value
            [e] => another value
            [f] => another value
            [x] => 
            [y] => 
            [z] => 
        )

    [2] => Array
        (
            [a] => 
            [b] => some more value
            [c] => 
            [d] => 
            [e] => 
            [f] => 
            [x] => some more value
            [y] => some more value
            [z] => some more value
        )

)

提前感谢您提供有关如何实现这一目标的任何帮助.

是的,在这种情况下你可以使用array_merge:
$a = array('a' => 'some value','z' => 'some more value');
$d = array($a,$c);
$keys = array();
foreach(new RecursiveIteratorIterator(new RecursiveArrayIterator($d)) as $key => $val) $keys[$key] = '';
$data = array();
foreach($d as $values) {
    $data[] = array_merge($keys,$values);
}

echo '<pre>';
print_r($data);

编辑:另一种方法是使用与空配对的键创建密钥对值,然后映射每个$d并合并:

$keys = array_keys(call_user_func_array('array_merge',$d));
$key_pair = array_combine($keys,array_fill(0,count($keys),null));
$values = array_map(function($e) use ($key_pair) {
    return array_merge($key_pair,$e);
},$d);

猜你在找的PHP相关文章