Верно ли так записывать foreach для одой строки кода?
PSR почитайте, не будет таких вопросов.
Если кратко по делу - всегда используйте скобки и запись в несколько строк.
Код нужно писать так, чтобы его было легко читать.foreach ($array as $item) {
    $result[] = empty($item) ? 1 : $item;
}
Посмотрите ещё в сторону array_map.