Создаем динамические веб-сайты с помощью PHP, MySQL и JavaScript

Печать

Возвращение массива

Только что была рассмотрена функция, возвращающая единственное значение. Но существуют также способы получения при выполнении функции сразу нескольких значений.

Самый подходящий из них возвращает эти значения в виде массива. В главе 3 уже было показано, что массив похож на связку переменных в одной строке. Использование массива для возвращения значений функции показано в примере 5.3.

Пример 5.3. Возвращение нескольких значений в массиве <?php

Snames - fix_names("WILLIAM", "henry". "gatES"); echo $names[0] . " " . $names[l] . " " . $names[2];

function fix names($nl, $n2, $n3) {

$nl - ucfirst(strtolower($nl)); $n2 = ucfirst(strtolower($n2)); $n3 = ucfirst(strtolower($n3)); return array($nl, $n2, $n3);

}

У этого метода есть преимущество, заключающееся в том, что все три имени содержатся по отдельности, а не объединяются в одну строку, что дает возможность обращаться к любому пользователю просто по его имени или фамилии, не извлекая каждое имя из возвращаемой строки.

Передача по ссылке

Когда в РНР перед именем переменной ставится символ &, парсер знает, что тем самым передается не сама переменная, а ссылка на нее. Это понятие может восприниматься с трудом, поэтому давайте вернемся к метафоре со спичечным коробком, которая использовалась в главе 3.

Представьте, что вы не вынимаете клочок бумаги из коробка, не читаете то, что на нем написано, не копируете эту надпись на другой клочок бумаги, не возвращаете оригинал в коробок и не передаете копию функции, а просто привязываете нитку к исходному клочку бумаги и передаете функции второй конец этой нитки (см. рис. 5.2).

Теперь, для того чтобы найти данные, к которым она обращается, функция может проследовать по нитке. Таким образом исключаются все издержки на создание копии переменной, предназначенной только для того, чтобы в функции можно было воспользоваться ее значением. Более того, теперь функция может изменить значение переменной.

Значит, пример 5.3 можно переписать, чтобы передать ссылки на все параметры, с тем чтобы после этого функция напрямую смогла внести в них изменения (пример 5.4).