在多维数组中将所有数组元素向上移动一级

Eli*_*Eli 10 php

我有一个可能看起来像的数组

$arr = array(
    array(
        'test1' => 'testing1'
    ),
    array(
        'test2' => array(
         1 =>'testing2
    )
);
Run Code Online (Sandbox Code Playgroud)

我想把它变成

$newArr = array(
    'test1' => 'testing1',
    'test2' => array(
         1 => 'testing2'
     )
);
Run Code Online (Sandbox Code Playgroud)

所以我一直试图将所有数组元素上移一级.

eidt:

这是我将2个数组组合在一起的方法:

public function arrayMerge($arr1, $arr2)
            {
                foreach($arr2 as $key => $value) {

                    $condition = (array_key_exists($key, $arr1) && is_array($value));
                    $arr1[$key] = ($condition ? $this->arrayMerge($arr1[$key], $arr2[$key]) : $value);
                }

                return $arr1;
            }
Run Code Online (Sandbox Code Playgroud)

hak*_*kre 22

这有点微不足道,很多方面都是可能的.

例如,使用数组union运算符(+)Docs创建数组内所有数组的并集:

$newArr = array();
foreach ($arr as $subarray)
    $newArr += $subarray;
Run Code Online (Sandbox Code Playgroud)

或者通过array_mergeDocs同时使用包含所有子数组的call_user_func_array文档:

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

  • 从PHP 5.6开始,您可以使用splat运算符```$ arr = array_merge(... $ arr)```.它比call_user_func_array快得多 (4认同)

Bab*_*aba 12

尝试

$arr = array(
        array('test1' => 'testing1' ), 
        array('test2' => array(1 =>'testing2')) 
);

$new = array();
foreach($arr as $value) {
    $new += $value;
}
var_dump($new);
Run Code Online (Sandbox Code Playgroud)

产量

array
  'test1' => string 'testing1' (length=8)
  'test2' => 
    array
      1 => string 'testing2' (length=8)
Run Code Online (Sandbox Code Playgroud)