Попробуйте:
array1 = [{"id": 1,"name": "aaa"},{"id": 2,"name": "bbb"},{"id": 5,"name": "ccc"},{"id": 6,"name": "ddd"},{"id": 8,"name": "eee"},{"id": 12,"name": "fff"}] ;
array2 = [ 5, 6, 8 ,12];
var result = array1.filter(item => array2.includes(item.id)).map(({id,name}) => ({name}));
console.log( result );
Я знаю, что это не самый полезный ответ, но тем более что вы создаете / модифицируете XML, я d переключиться на использование функций DOM. SimpleXML удобен для доступа к простым документам, но довольно слаб при их изменении.
Если SimpleXML относится к вам любезно во всех других местах и вы хотите придерживаться его, у вас все еще есть возможность временно перейти к функциям DOM для выполнения что вам нужно, а затем вернуться назад, используя dom_import_simplexml ()
и simplexml_import_dom ()
. Я не уверен, насколько это эффективно, но это может вам помочь.