Заменить из одного array данными из другого

198
29 июня 2018, 11:10

Есть два Array

Первый

    [11] => 565;Duo Pellet N
[12] => 565;Duo Pellet N
[13] => 565;Duo Pellet N
[14] => 565;Duo Pellet N
[15] => 565;Duo Pellet N
[16] => 565;Duo Pellet N
[17] => 565;Duo Pellet N
[18] => 167;НЕУС-В
[19] => 167;НЕУС-В
[20] => 167;НЕУС-В
[21] => 167;НЕУС-В
[22] => 167;НЕУС-В
[23] => 167;НЕУС-В
[24] => 190;UNI-MAX
[25] => 190;UNI-MAX
[26] => 190;UNI-MAX
[27] => 190;UNI-MAX
[28] => 190;UNI-MAX
[29] => 190;UNI-MAX

Второй

[193] => 7729;CIC 
[194] => 7730;КОТВ-100 М
[195] => 7692;AIR Pellet 36 кВт
[196] => 7683;UNI-MAX
[197] => 7694;AIR Pellet  50 кВт
[198] => 7689;Клапан безопасности
[199] => 7690;AIR Pellet 15 кВт

Разберем пример. Берем из первого Array [25] => 190;UNI-MAX и находим по UNI-MAX во втором Array [196] => 7683;UNI-MAX и заменяем все в первом Array 190;UNI-MAX на второй 7683;UNI-MAX при этом сложность оставить в первом точно такую же сортировку.

Answer 1

Назовем первый массив $src, а второй $replacement;

Насколько можно судить, вторая часть строки во втором массиве - уникальна. Так что его надо привести к такому виду, чтобы вместро значения 7729;CIC получился массив CIC => 7729. Сделать это в принципе не сложно, например:

$matches = array_column(array_map(function($v){ 
                           return explode(';', $v);
                     }, $replacement), 0, 1);

А дальше пройтись по строкам первого массива, также разбивать их на части и делать сопоставление с массивом соответствий:

$result = array_map(function($v) use ($matches) {
                 [$id, $x] = explode(';', $v);
                 return isset($matches[$x]) ? "{$matches[$x]};$x" : $v;
            }, $src);
READ ALSO
Не могу применить миграцию

Не могу применить миграцию

помогите пожалуйста разобраться, при применении миграции php yii migrate/to m180606_092852_add_secret_key_in_user_table выходит ошибка:

230
Как подключить composer

Как подключить composer

Я скопировал сайт с одного сервера на другой простым копированием (сайт на yii2)В проекте есть composer

197
Запуск bitcoind в Windows и подключение по rpc?

Запуск bitcoind в Windows и подключение по rpc?

Ранее в своём вопросе я выяснил что мне нужен bitcoindПрочитав вики я скачал Bitcoin Core

300
Как создать кнопку, которая при клике будет менять фон на определённую картинку?

Как создать кнопку, которая при клике будет менять фон на определённую картинку?

Есть код на php,мне нужно,чтобы при клике на кнопку, картинка основного фона менялась на другую конкретную картинку

195