По идее должно сработать. Если конечно во втором массиве нет элементов отсутствующих в первом - то результирующий массив выдаст вам элементы второго массива расставленные в порядке соответсвующему первому.
применить в $b php.net/manual/ru/function.usort.php , в функции проверять наличие элементов в массиве $a php.net/manual/ru/function.array-search.php и сравнивать их индексы. если какой-то элемент не найден - то он всегда больше/меньше для сдвигания в какой-либо конец результата (в зависимости от потребностей), если оба не найдены, то они равны.