如何将多维数组合并为给定格式的一个数组

时间:2017-03-30 05:10:57

标签: php arrays foreach array-merge

我需要一个帮助,

我有这种类型的数组。

[0] => Array
    (
        [0] => Array
            (
                [offer_id] => 377598
                [countries] => Array
                    ( 
                    ) 
            )
    )    

[0] => Array
    (
        [0] => Array
            (
                [offer_id] => 1552161
                [countries] => Array
                    (                            
                    )
            )            
    )

我想要这个结果如何可能请提供我想要的解决方案。

            [0] => Array
            (
                [offer_id] => 377598
                [countries] => Array
                    (                            

                    )

            )

            [1] => Array
            (
                [offer_id] => 1552161
                [countries] => Array
                    (

                    )

            )            

提前致谢。

此致 Nilay Parekh

2 个答案:

答案 0 :(得分:1)

只需使用array_merge_recursive()即可。文档:http://php.net/manual/en/function.array-merge-recursive.php

修改

通过OP中的编辑,我假设您的数组格式为:

$yourArray =  array(
       array(array("offer_id" => 377598,"countries" => array())),
       array(array("offer_id" => 377598,"countries" => array()))
      ); 

如果是这样,您可以尝试array_reduce超过array_merge类似的内容:

$r = array_reduce($yourArray, 'array_merge', array());
var_dump($r);

答案 1 :(得分:0)

据我所知,你需要的是二级合并。要做到这一点,你应该去自定义功能。

试试这个自定义功能,

function arrayMergeSecondLevel($arr1, $arr2){
    $merged_arr = array_merge($arr1, $arr2);
    return array_map(function($item){
        return $item[0];
    }, $merged_arr);
}

为它传递你的2个数组,它将提供你需要的东西。

说明:此自定义函数将首先使用array_merge,以便我们获得2个数组的合并结果。它循环通过合并的数组,并将第二级作为第一级。

修改

如果你有一个阵列,那么

function arrayMergeSecondLevel($arr) {
    return array_map(function($item) {
        return $item[0];
    }, $arr);
}