По значению, но с оптимизацией copy-on-write:
function process(array $arr) {
// $arr - "копия", но реально данные не скопированы (COW)
$arr[] = 'new'; // ЗДЕСЬ происходит реальное копирование
}
$data = [1, 2, 3];
process($data);
var_dump($data); // [1, 2, 3] - не изменилсяДля передачи по ссылке:
function addItem(array &$arr) {
$arr[] = 'new'; // изменяет оригинал
}COW делает передачу по значению эффективной для чтения - копия создается только при модификации.