Как я могу объединить многомерный массив в один массив в заданном формате

Мне нужна одна помощь,

У меня есть этот тип массива.

[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
                    (

                    )

            )            

Заранее спасибо.

С уважением, Нилай Парех

2 ответа

Решение

Просто используйте 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);

Как я понял, что вам нужно, это объединение второго уровня. Для этого вам нужно перейти к пользовательской функции.

Попробуйте эту пользовательскую функцию,

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

передайте свои 2 массива для этого, и он даст то, что вам нужно.

Объясните: эта пользовательская функция сначала будет использовать array_merge, чтобы мы получили объединенный результат ваших двух массивов. Он зацикливает объединенный массив и делает второй уровень первым.

редактировать

Если у вас есть один массив пойти на это,

function arrayMergeSecondLevel($arr) {
    return array_map(function($item) {
        return $item[0];
    }, $arr);
}
Другие вопросы по тегам