Как одновременно перебрать два массива?
Функция array_map умеет работать более чем с одним массивом:

echo implode('<br>', array_map(function($n, $i) use(&$result) {
  return
    "Книгу ".$result['BOOKS'][$i]['bookName'].
    " написали для машины ".$n['name']." в ".$n['year'].
    " году, можно заказать по электронной почте ".$result['BOOKS'][$i]['authorEmail'];
}, $result['CARS'], array_keys($result['BOOKS'])));
Как вариант, ещё так можно:$i = 0;
foreach ($result['CARS'] as $key => $value) {
    echo "Книгу ".$result['BOOKS'][$i]['bookName']." написали для машины ".$value['name']." в ".$value['year']." году, можно заказать по электронной почте ".$result['BOOKS'][$i]['authorEmail']."\n";
    $i++;
}
https://3v4l.org/lOQ95