вставить значение в массив если они совпадают по ключам

208
23 августа 2017, 18:39

Есть такой массив:

//$array_phrase 
Array
(
[112340] => Array
    (
        [0] => Array
            (
                [0] => 112340
                [1] => 4448741
                [2] => Отдых
                [3] => -
            )
        [1] => Array
            (
                [0] => 112340
                [1] => 4448743
                [2] => Работа
                [3] => +
            )
        [2] => Array
            (
                [0] => 112340
                [1] => 4448742
                [2] => Объявления
                [3] => +
            )
        [3] => Array
            (
                [0] => 112340
                [1] => 4448740
                [2] => Лето
                [3] => -
            )
        [4] => Array
            (
                [0] => 112340
                [1] => 4448739
                [2] => Погода
                [3] => -
            )
    )

И такой:

//$temp
Array
(
    [112340] => Array
        (
            [0] => 70557
            [1] => 70558
            [2] => 70559
        )
)
Array
(
    [112367] => Array
        (
            [0] => 70648
            [1] => 70649
            [2] => 70650
        )
)
Array
(
    [112372] => Array
        (
            [0] => 70661
            [1] => 70662
            [2] => 70663
        )
)
Array
(
    [112419] => Array
        (
            [0] => 70735
        )
)
Array
(
    [112477] => Array
        (
            [0] => 70868
            [1] => 70869
            [2] => 70867
            [3] => 70865
            [4] => 70866
        )
)

Как сделать добавление в первый массив новый вложенный массив (после [3]), если они по ключам будут одинаковы, то для каждой записи первого массива - добавляем значение второго массива типо того:

[0] => Array
            (
                [0] => 112340
                [1] => 4448741
                [2] => Отдых
                [3] => -
                [4] => array (
                               [0] => 70557
                               [1] => 70558
                               [2] => 70559)
            )

Только для каждого элемента первого массива. PHP Code:

$container_phrase = array();
    foreach($id_temp as $one_id_temp)
    {
        $identifier_project = $one_id_temp;
        $url_phrases  = "https://site.com/api/project/$identifier_project/phrases"; 
        $get_all_phrases = connectToSite($url_phrases, $token);
        foreach($get_all_phrases as $value_phrase)
        {
            $phrase = $value_phrase['phrase'];
            if($phrase == null){
                $phrase = 'Данные отсутствуют'; 
            }
            $personal_id = $value_phrase['id'];
            if($personal_id == null){
                $personal_id = '-//-'; 
            }
            $geo = $value_phrase['is_geo']; 
            if($geo == false){
                 //интерпретируем
                $geo = '-';
            }elseif($geo == true){
                $geo = '+';
            } 
            $array_phrase[$identifier_project][] = [$identifier_project, $personal_id, $phrase, $geo];
        }
        $temp = [];
        $url_engines = "https://site.com/api/project/$identifier_project/engines"; 
        $get_all_engines = connectToSite($url_engines, $token);
        foreach($get_all_engines as $arr){
            $temp[$identifier_project][] = $arr['id'];
        }
        //echo "<pre>"; print_r($temp); echo "</pre>";
    }
    //echo "<pre>"; print_r($array_phrase); echo "</pre>";
Answer 1
$primaryArray = [...];
$secondaryArray = [...];
foreach($secondaryArray as $key => $value){
    if(isset($primaryArray[$key]){
         foreach(array_keys($primaryArray[$key])) as $key2){
              $primaryArray[$key][$key2][] = $value;
         }
    }
}
Answer 2

Сортировка массива "от меньшего к большему" выглядит так:

foreach ($search_systems as $system )
    {
       uasort($system, function ($a, $b){
            return ($a - $b);
        }); 
        echo "<pre>"; print_r($system); echo "</pre>";
    }
//$system
Array
(
    [0] => 70557
    [1] => 70558
    [2] => 70559
)
Array
(
    [0] => 70648
    [1] => 70649
    [2] => 70650
)
Array
(
    [0] => 70661
    [1] => 70662
    [2] => 70663
)
Array
(
    [0] => 70735
)
Array
(
    [3] => 70865
    [4] => 70866
    [2] => 70867
    [0] => 70868
    [1] => 70869
)

Как теперь передать выполнить сортировку уже для данного примера:

foreach($search_systems as $key => $value){
        if(isset($array_phrase[$key])){
             foreach(array_keys($array_phrase[$key]) as $key2){
                  $array_phrase[$key][$key2][] = $value;
             }
        }
    }
READ ALSO
Меньше или больше mysql regexp

Меньше или больше mysql regexp

ЗдравствуйтеВытаскиваю записи с применением regexp

184
Как программировать микроконтроллеры? [требует правки]

Как программировать микроконтроллеры? [требует правки]

Здравствуйте, решил развиваться по теме программирования микроконтроллеровДруг будет заниматься инженерией, а я - программированием

170
cannot bind ‘T’ lvalue to ‘T&amp;&amp;’

cannot bind ‘T’ lvalue to ‘T&&’

Почему я не могу сделать так?

174
Контейнер deque в STL c++

Контейнер deque в STL c++

Я начал изучения библиотеки STL и нашел такой интересный контейнер, как deque, но я не понял, в чем его преимущество, если можно заменить его другими...

402