Есть два 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 при этом сложность оставить в первом точно такую же сортировку.
Назовем первый массив $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);
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники