Нужно перебрать первый массив, получать значение из второго, складывать в результирующий массив, и делать unset этого значения во втором. После перебора всех значений первого массива, результат объединить (array_merge) с тем, что осталось во втором массиве
$resultArray = [];
foreach ($firstArray as $key) {
if (isset($secondArray[$key])) {
$resultArray[$key] = $secondArray[$key];
unset($secondArray[$key]);
}
}
$resultArray = array_merge($resultArray, $secondArray);
UPDATE проверил и поправил
sandbox.onlinephpfunctions.com/code/cc9e81e851d84c...