Php 将多维数组中的所有数组元素上移一级

Php 将多维数组中的所有数组元素上移一级,php,Php,我有一个数组,看起来像 $arr = array( array( 'test1' => 'testing1' ), array( 'test2' => array( 1 =>'testing2 ) ); 我想把它变成 $newArr = array( 'test1' => 'testing1', 'test2' => array( 1 => '

我有一个数组,看起来像

$arr = array(
    array(
        'test1' => 'testing1'
    ),
    array(
        'test2' => array(
         1 =>'testing2
    )
);
我想把它变成

$newArr = array(
    'test1' => 'testing1',
    'test2' => array(
         1 => 'testing2'
     )
);
所以我一直在尝试将所有数组元素上移一个级别

艾德:

这是我将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;
            }

这有点琐碎,很多方法都是可能的

例如,使用创建阵列内所有阵列的并集:

$newArr = array();
foreach ($arr as $subarray)
    $newArr += $subarray;
或通过以下方式同时使用所有子阵列:

试一试

输出

array
  'test1' => string 'testing1' (length=8)
  'test2' => 
    array
      1 => string 'testing2' (length=8)

谢谢,这与我的arrayMerge()方法结合使用效果非常好!如果不使用
foreach
,是否没有内置函数来执行此操作?在PHPI中,将多维数组转换为一维数组会更容易,因为我们无法使用嵌套的3到4个foreach循环从数组中提取数据,所以PHPI一直在搜索这样一个内置函数。如果有人不使用foreach esp:with内置函数,那么我会称他/她为PHP的王冠。我需要做同样的事情,尽管我发现只要做
$newArray=$oldArray[0]
就可以解决问题。这在您的情况下不起作用吗?我更喜欢这种方法,因为它避免了“foreach”循环。谢谢。从PHP5.6开始,您可以使用splat操作符
$arr=array\u merge(…$arr)
。它比call_user_func_数组快得多
$arr = array(
        array('test1' => 'testing1' ), 
        array('test2' => array(1 =>'testing2')) 
);

$new = array();
foreach($arr as $value) {
    $new += $value;
}
var_dump($new);
array
  'test1' => string 'testing1' (length=8)
  'test2' => 
    array
      1 => string 'testing2' (length=8)