Суть: переносил сайт с одной CMS на другую (с самописной на Modx). Спустя некоторое время, потребовалось доперенести некоторые данные.Мой алгоритм: строю запросы с выборкой по необходимым полям, получаю 2 массива из двух баз(1. откуда переносим; 2. Куда переносим), переношу данные из первого массива во второй по полю url. Массив из которого переносим имеет такой вид:
array(5) {
["id"] => "837"
["alias"] => "1-os"
["val_text"] => "Текст который необходимо перенести"
}
Массив, в который нужно перенести имеет такой вид:
array(2) {
["id"] => "3531"
["alias"] => "1-os"
["val_text"] => "Сюда нужно поместить переносимый текст"
}
По сути, каждый массив - это данные для страницы (будь то товар или статья), таких массивов много, айдишники там и там разные (в modx были сгенерированы новые), поэтому единственный критерий переноса - alias. Еще нюанс в том, что все эти поля находятся в разных таблицах, поэтому я счел целесообразным составить отдельные запросы на выборку, а потом с помощью php это объединить
Вопрос: как вообще это можно осуществить? Смотрел различные функции типа array_replace или просто через $array1 + $array2 - не подходит. Может быть это вообще можно сделать через SQL?
В общем, я не хотел использовать этот метод - думал, что это затраты по ресурсам и есть более элегантное решение, но тем не менее, отработал он быстро и точно:
foreach($resources2 as $k => $v) {
foreach($resources as $res) {
if($res['alias'] == $v['alias']) {
$resources2[$k]['inform'] = $res['inform'];
}
}
}
То есть при каждой проверке страницы "нового массива" мы будем проходить по всем элементам "старого массива" и при совпадении alias переносим инфу...
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab