Есть два массива:
array1 =
0 => [ 0 => a, 1 => b, 2 => c, 3 => d, 4 => e],
1 => [ 0 => f, 1 => g, 2 => a, 3 => h, 4 => i];
array2 =
0 => [0 => g, 1 => a, 2 => h];
Нужно найти схождение массивов и одинаковые значения во втором массиве заменить на случайное, при этом второй массив, в любом случае, должен остаться уникальным, т.е., логика, вроде, такая: сравниваем массивы, заменяем дубли, ещё раз проверяем на уникальность и, по необходимости, опять меняем повторяющиеся значения и так до тех пор, пока значения второго массива не станет уникальным, т.е. - ищем дубли, в данном случае "а", меняем на случайное значение, допустим, попалось "d", сравниваем ещё раз, меняем "d" на следующее случайное значение и т.д., до полного несовпадения массивов.
Если со сравнением и заменой проблем нет, то загвоздка заключается в проверке второго массива - кроме многоэтажных циклов, тормозящих систему, в голову ничего не приходит.
Буду благодарен за любую помощь.