На сайте-источнике есть текстовое поле ($row->adv), где через запятую перечислены параметры (например: автобусы, трамваи, метро, подъезды).
При миграции стоит задача перевести параметры в отдельные термины (причем несколько параметров могут означать один и тот же термин).
Обращаюсь к
public function prepareRow($row)
Еесть многомерный массив типа: Реклама - Тип рекламы - Параметры. Перебираю его foreach и сравниваю со значением $row->adv. Если совпадает, то ему присваивается соответствующий термин из Типа рекламы.
Если в исходном текстовом поле $row->adv был указан только один параметр ($row->adv == 'автобусы'), то нода получает термин ($row->adv == 'Реклама на транспорте').
Теперь к проблеме:
Если там несколько параметров:
$row->adv == 'автобусы, трамваи, подъезды';
По идее в результате надо получить два термина: Реклама на транспорте, Реклама в домах. То есть после сравнения надо передать в Migrate что-то вроде:
$row->adv == "Реклама на транспорте, Реклама в домах" ->separator(', ');
Но как провести это сравнение и что вернуть в $row?
Ответы
см
http://php.net/manual/ru/function.array-intersect-key.php
http://php.net/manual/ru/function.array-diff-key.php
Раскладываю строку в массив по наличию ','
Но остается вопрос, как сравнить и заменить каждый элемент $arr на нужный термин
Непонятно ничего
Я разобрался. В принципе вопрос касался исключительно методики сравнения простого и многомерного ассоциативного массива.