Задача
Необходимо вернуть значение по ссылке, а не по значению. Это позволяет избежать создания еще одной копии переменной.
Решение
Синтаксис возвращения переменной по ссылке подобен синтаксису передачи ее по ссылке. Однако вместо размещения символа & перед параметром располагаем его перед именем функции:
function &wrap_html_tag($string, $tag = 'b') {
return "<$tag>$string</$tag>";
}
Кроме того, при вызове функции нужно использовать оператор присваивания =&, а не обычный оператор =:
$html =& wrap_html_tag($string);
Обсуждение
В отличие от передачи значения в функцию, когда аргумент передается либо по значению, либо по ссылке, в данном случае не обязательно выбирать присваивание ссылки, а можно просто взять возвращенноеb значение. Достаточно заменить обычным оператором = оператор =&, и PHP присвоит значение вместо ссылки.