Как из двух массивов собрать нужный

есть два массива: Первый

Array
(
    [0] => Array
        (
            [id] => 1
            [district_name] => ЦАО
        )

    [1] => Array
        (
            [id] => 2
            [district_name] => САО
        )

    [2] => Array
        (
            [id] => 3
            [district_name] => СВАО
        )

    [3] => Array
        (
            [id] => 4
            [district_name] => ВАО
        )

    [4] => Array
        (
            [id] => 5
            [district_name] => ЮВАО
        )

    [5] => Array
        (
            [id] => 6
            [district_name] => ЮАО
        )

    [6] => Array
        (
            [id] => 7
            [district_name] => ЮЗАО
        )

    [7] => Array
        (
            [id] => 8
            [district_name] => ЗАО
        )

    [8] => Array
        (
            [id] => 9
            [district_name] => СЗАО
        )

    [9] => Array
        (
            [id] => 10
            [district_name] => ЗелАО
        )

)

И второй:

Array
(
    [area_name] => Array
        (
            [0] => Арбат
            [1] => Басманный
            [2] => Замоскворечье
            [3] => Красносельский
            [4] => Мещанский
            [5] => Пресненский
            [6] => Таганский
            [7] => Тверской
            [8] => Хамовники
            [9] => Якиманка
        )

)

Array
(
    [area_name] => Array
        (
            [0] => Аэропорт
            [1] => Беговой
            [2] => Бескудниковский
            [3] => Войковский
            [4] => Головинский
            [5] => Дегунино Восточное
            [6] => Дегунино Западное
            [7] => Дмитровский
            [8] => Коптево
            [9] => Левобережный
            [10] => Молжаниновский
            [11] => Савёловский
            [12] => Сокол
            [13] => Тимирязевский
            [14] => Ховрино
            [15] => Хорошёвский
        )

)

Array
(
    [area_name] => Array
        (
            [0] => Алексеевский
            [1] => Алтуфьевский
            [2] => Бабушкинский
            [3] => Бибирево
            [4] => Бутырский
            [5] => Лианозово
            [6] => Лосиноостровский
            [7] => Марфино
            [8] => Марьина роща
            [9] => Медведково Северное
            [10] => Медведково Южное
            [11] => Останкинский
            [12] => Отрадное
            [13] => Ростокино
            [14] => Свиблово
            [15] => Северный
            [16] => Ярославский
        )

)

Array
(
    [area_name] => Array
        (
            [0] => Богородское
            [1] => Вешняки
            [2] => Восточный
            [3] => Гольяново
            [4] => Ивановское
            [5] => Измайлово Восточное
            [6] => Измайлово
            [7] => Измайлово Северное
            [8] => Косино-Ухтомский
            [9] => Метрогородок
            [10] => Новогиреево
            [11] => Новокосино
            [12] => Перово
            [13] => Преображенское
            [14] => Соколиная гора
            [15] => Сокольники
        )

)

Array
(
    [area_name] => Array
        (
            [0] => Выхино-Жулебино
            [1] => Капотня
            [2] => Кузьминки
            [3] => Лефортово
            [4] => Люблино
            [5] => Марьино
            [6] => Некрасовка
            [7] => Нижегородский
            [8] => Печатники
            [9] => Рязанский
            [10] => Текстильщики
            [11] => Южнопортовый
        )

)

Array
(
    [area_name] => Array
        (
            [0] => Бирюлёво Восточное
            [1] => Бирюлёво Западное
            [2] => Братеево
            [3] => Даниловский
            [4] => Донской
            [5] => Зябликово
            [6] => Москворечье-Сабурово
            [7] => Нагатино-Садовники
            [8] => Нагатинский затон
            [9] => Нагорный
            [10] => Орехово-Борисово Северное
            [11] => Орехово-Борисово Южное
            [12] => Царицыно
            [13] => Чертаново Северное
            [14] => Чертаново Центральное
            [15] => Чертаново Южное
        )

)

Array
(
    [area_name] => Array
        (
            [0] => Академический
            [1] => Бутово Северное
            [2] => Бутово Южное
            [3] => Гагаринский
            [4] => Зюзино
            [5] => Коньково
            [6] => Котловка
            [7] => Ломоносовский
            [8] => Обручевский
            [9] => Тёплый Стан
            [10] => Черёмушки
            [11] => Ясенево
        )

)

Array
(
    [area_name] => Array
        (
            [0] => Внуково
            [1] => Дорогомилово
            [2] => Крылатское
            [3] => Кунцево
            [4] => Можайский
            [5] => Ново-Переделкино
            [6] => Очаково-Матвеевское
            [7] => Проспект Вернадского
            [8] => Раменки
            [9] => Солнцево
            [10] => Тропарёво-Никулино
            [11] => Филёвский парк
            [12] => Фили-Давыдково
        )

)

Array
(
    [area_name] => Array
        (
            [0] => Куркино
            [1] => Митино
            [2] => Покровское-Стрешнево
            [3] => Строгино
            [4] => Тушино Северное
            [5] => Тушино Южное
            [6] => Хорошёво-Мневники
            [7] => Щукино
        )

)

Array
(
    [area_name] => Array
        (
            [0] => Крюково
            [1] => Матушкино
            [2] => Савёлки
            [3] => Силино
            [4] => Старое Крюково
        )

)

Как из этих двух собрать вот такой массив:

Array
(
    [area_name] => Array
        (
            [1] => Арбат
            [1] => Басманный
            [1] => Замоскворечье
            [1] => Красносельский
            [1] => Мещанский
            [1] => Пресненский
            [1] => Таганский
            [1] => Тверской
            [1] => Хамовники
            [1] => Якиманка
        )

)

Array
(
    [area_name] => Array
        (
            [2] => Аэропорт
            [2] => Беговой
            [2] => Бескудниковский
            [2] => Войковский
            [2] => Головинский
            [2] => Дегунино Восточное
            [2] => Дегунино Западное
            [2] => Дмитровский
            [2] => Коптево
            [2] => Левобережный
            [2] => Молжаниновский
            [2] => Савёловский
            [2] => Сокол
            [2] => Тимирязевский
            [2] => Ховрино
            [2] => Хорошёвский
        )

)

Ну или чтобы было вот так:

Array
(
    [area_name] => Array
        (
            [0] => Арбат
            [1] => Басманный
            [2] => Замоскворечье
            [3] => Красносельский
            [4] => Мещанский
            [5] => Пресненский
            [6] => Таганский
            [7] => Тверской
            [8] => Хамовники
            [9] => Якиманка
            [id] => 1
        )

)

Array
(
    [area_name] => Array
        (
            [0] => Аэропорт
            [1] => Беговой
            [2] => Бескудниковский
            [3] => Войковский
            [4] => Головинский
            [5] => Дегунино Восточное
            [6] => Дегунино Западное
            [7] => Дмитровский
            [8] => Коптево
            [9] => Левобережный
            [10] => Молжаниновский
            [11] => Савёловский
            [12] => Сокол
            [13] => Тимирязевский
            [14] => Ховрино
            [15] => Хорошёвский
            [id] => 2
        )

)

Объясню для чего это нужно, есть таблица geo_area, у нее есть столбцы: id, district_id и area_name Нужно чтобы из второго массива имена вставились в area_name, а из первого массива в соответствии с принадлежностью area_name к area_district вставились в district_id id записи... Не знаю понятно ли объяснил, в общем это связь один ко многим, но что-то вот застрял с решением...


Ответы (2 шт):

Автор решения: Виктор Карев

Очень странные структуры. По-моему, оптимально было бы собрать данные в структуру типа:

Array
(
    [0] => Array
        (
            [id] => 1
            [district_name] => ЦАО,
            [area_name] => Array
                (
                    [0] => Арбат
                    [1] => Басманный
                    [2] => Замоскворечье
                    [3] => Красносельский
                    [4] => Мещанский
                    [5] => Пресненский
                    [6] => Таганский
                    [7] => Тверской
                    [8] => Хамовники
                    [9] => Якиманка
                )
        )

    [1] => Array
        (
            [id] => 2
            [district_name] => САО
            [area_name] => Array
                (
                    [0] => Аэропорт
                    [1] => Беговой
                    [2] => Бескудниковский
                    [3] => Войковский
                    [4] => Головинский
                    [5] => Дегунино Восточное
                    [6] => Дегунино Западное
                    [7] => Дмитровский
                    [8] => Коптево
                    [9] => Левобережный
                    [10] => Молжаниновский
                    [11] => Савёловский
                    [12] => Сокол
                    [13] => Тимирязевский
                    [14] => Ховрино
                    [15] => Хорошёвский
               )
        )
...
)
foreach(array_keys($ar1) as $key) {
    $ar1[$key]['area_name'] = $ar2[$key]['area_name'];
}
→ Ссылка
Автор решения: Rus

Задача решена, массив собрал как надо. Может кому понадобится, вобщем парсил сайт по округам, районам и улицам, часть кода по моей задаче:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

setlocale(LC_ALL, 'ru_RU');
date_default_timezone_set('Europe/Moscow');
header('Content-type: text/html; charset=utf-8');

require_once('phpQuery/phpQuery.php');

function print_arr($arr){
    echo '<pre>'.print_r($arr, true).'</pre>';
}

$url = 'http://mosopen.ru/regions';
$file = file_get_contents($url);
$doc = phpQuery::newDocument($file);
$all = $doc->find('#regions_by_districts td p br')->remove();
$all = $doc->find('#regions_by_districts td p strong a')->addClass('district');
$all = $doc->find('#regions_by_districts td p > a')->addClass('area');
$all = $doc->find('#regions_by_districts td');
// часть из этих переменных тут не используется, код большой, я же привел только часть кода.
$data['district_name'] = array();
$data['district_id'] = array();
$data['area_id'] = array();
$data['street_id'] = array();

$data['area_name'] = array();
$data['street_id'] = array();

$data['street_name'] = array();

$test = [];

$i = 0;
foreach ($all as $key => $val){
    $i++;
    $all_item = pq($val);
    $all_name_district = $all_item->find('.district')->text();
    $area_name = $all_item->find('.area')->text();
    $area_name = preg_split('/\r\n|\r|\n/', $area_name);
    array_pop($area_name);
    foreach ($area_name as $k => $v) {
        $area_name['area_name'][] = $area_name[$k];
        unset($area_name[$k]);
    }
    $data['area_name'] = $area_name;
    $data['district_name'][$all_name_district] = $data['area_name'];
    $a['district_id'] = $i;
    $test[] = array_merge($data['district_name'][$all_name_district], $a);
    //$data['district_name'][] = $all_name_district;
}
// Тут запрос на добавление в таблицу бд
try {
    $sth = new PDO("mysql:host=localhost;dbname=is55", $user, $pass);
    $sql_part = '';
    foreach ($test as $key => $val) {
        foreach($val['area_name'] as $v) {
            $sql_part .= "('$v', '{$val['district_id']}'),";
        }
    }
    $sql_part = rtrim($sql_part, ',');
//    print_arr($sql_part);
    $sql = "INSERT INTO `geo_area` (area_name, district_id) VALUES $sql_part";
    $affectedRowsNumber = $sth->exec($sql);
    echo "В таблицу geo_district добавлено строк: $affectedRowsNumber";
}
catch (PDOException $e) {
    echo "Database error: " . $e->getMessage();
}
→ Ссылка