PHP найти массив значений ключей и заменить - PullRequest
0 голосов
/ 09 сентября 2018

В основном мне нужно найти массив и заменить его данными

основная идея состоит в том, чтобы искать данные из старого массива и проверять, существуют ли они в новом массиве, если их нет, добавить их

Это мой старый массив

$array1 = array(
array('id' => '1','data1' => 'ect bla bla'),
array('id' => '2','data2' => 'ect bla bla'),
array('id' => '3','data3' => 'ect bla bla'),
array('id' => '6','data3' => 'new data'),
array('id' => '100','data3' => 'this data is added if it does not exist in the array')
);

Это мой новый массив

$array2 = array(
array('id' => '1','data1' => 'new data'),  //example data that are modified
array('id' => '2','data2' => 'new data'),  //example data that are modified
array('id' => '3','data3' => 'new data'),  //example data that are modified

array('id' => '4','data3' => 'new data'),
array('id' => '5','data3' => 'new data'),

array('id' => '6','data3' => 'new data')   //example data that are modified
);

в этой части я не знаю что поставить

foreach ($array1 as $value) {
     //this is the id.. I imagine that here is where all the magic goes xd
     $value['id']
}

Мне нужен этот результат

print_r($array2);


Array
(
    [0] => Array
        (
            [id] => 1
            [data1] => ect bla bla
        )

    [1] => Array
        (
            [id] => 2
            [data2] => ect bla bla
        )

    [2] => Array
        (
            [id] => 3
            [data3] => ect bla bla
        )

    [3] => Array
        (
            [id] => 4
            [data3] => new data
        )

    [4] => Array
        (
            [id] => 5
            [data3] => new data
        )

    [5] => Array
        (
            [id] => 6
            [data3] => ect bla bla
        )
   [6] => Array
    (
        [id] => 7
        [data3] => this data is added if it does not exist in the array
    )

)

1 Ответ

0 голосов
/ 09 сентября 2018

Попробуйте array_replace_recursive($array2, $array1);

http://us3.php.net/manual/en/function.array-replace-recursive.php

Это дает следующий вывод:

Array
(
[0] => Array
    (
        [id] => 1
        [data1] => ect bla bla
    )

[1] => Array
    (
        [id] => 2
        [data2] => ect bla bla
    )

[2] => Array
    (
        [id] => 3
        [data3] => ect bla bla
    )

[3] => Array
    (
        [id] => 6
        [data3] => new data
    )

[4] => Array
    (
        [id] => 100
        [data3] => this data is added if it does not exist in the array
    )

[5] => Array
    (
        [id] => 6
        [data3] => new data
    )

)

Затем, чтобы сделать его уникальным, используйте

array_map("unserialize", array_unique(array_map("serialize", $array3)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...