В каждом элементе, где есть потомки, добавляете стрелочку с классом. При клике по этому классу делаете что-то типа: e.target.closest('li').classList.toggle('open');
Ну и стили типа
Это имеет значение. Если смену html вызываете вы, то проще всего было бы вызывать нужные действия в коллбэке. А так - смотрите в сторону MutationObserver.
Это решение "в лоб". Второй вариант - из первого массива создать объект, ключами которого будет связка id+разделитель+secondId, а затем один раз пройтись по второму массиву с заменой значений.
Pseudoquater, усиливайтесь в php. Все-таки, это сервис для специалистов разного уровня, а не сервис готовых решений. =)
Ну или спросите фрилансеров: за деньги они вам что угодно сделают.
ThunderCat, резонно, можно сразу $arr[$n], если номера строк не интересуют.
ksort нужен для сохранения относительного порядка записей. Как я понял ТС, ему это важно.
Сергей Арсентьев, вот и я о том же: чтобы функция обработала элементы, надо чтобы эти элементы уже были на странице. Как вариант - затормозить скрипт до полной загрузки страницы.
e.target.closest('li').classList.toggle('open');
Ну и стили типа