{
echo "вызов функции display()";
}
?>
Возвращение значения и оператор return
Функция может возвращать некоторое значение - число, строку и т.д., то есть некоторый результат. Для возвращения значения в функции применяется оператор return, после которого указывается возвращаемое значение. Например:
<?php
$a = get();
echo "Сумма квадратов от 1 до 9 равна $a";
function get()
{
$result = 0; // возвращаемое значение for($i = 1; $i<10; $i++)
{
$result+= $i * $i;
}
return $result;
}
?>
Функция get() возвращает число, представляющее сумму квадратов от 1 до 9. Это число хранится в переменной $result. Благодаря оператору return мы можем присвоить значение, возвращаемое функцией get, какой-нибудь переменной: $a = get();.
Использование параметров Создадим функцию с параметрами:
<?php
$a = get(1, 10);
echo "Сумма квадратов от 1 до 9 равна $a";
function get($lowlimit, $highlimit)
{
$result = 0; // возвращаемое значение for($i = $lowlimit; $i < $highlimit; $i++)
{
$result+= $i * $i;
}
return $result;
85
}
?>
Так как теперь функция $get использует параметры, то мы должны передать при вызове этой функции на место параметров некоторые значения. Если при вызове мы укажем значения не для всех параметров, то это будет ошибка, например: $a = get(1);.
Но мы можем использовать значения по умолчанию для параметров. Например:
<?php
function get($lowlimit, $highlimit=10)
{
$result = 0; // возвращаемое значение for($i = $lowlimit; $i < $highlimit; $i++)
{
$result+= $i * $i;
}
return $result;
}
$a = get(1);
echo "Сумма квадратов равна $a"; ?>
Вэтом случае, если мы не укажем значение для второго параметра, то по умолчанию он будет равен 10.
Передача по ссылке
Впримере выше мы передавали параметры по значению. Но в PHP есть и другая форма передачи параметров - по ссылке. Рассмотрим два этих способа передачи параметров и сравним. Стандартная передача параметра по значению:
<?php $number = 10; get($number);
echo "<br /> \$number равно: $number";
function get($a)
{
$a*=$a;
echo "Квадрат равен: $a";
}
?>
86
После вызова функции get() значение переменной $number не изменится, так как в эту функцию в качестве параметра мы передаем значение переменной.
Теперь рассмотрим передачу параметра по ссылке:
<?php $number = 10; get($number);
echo "<br /> \$number равно: $number";
function get(&$a)
{
$a*=$a;
echo "Квадрат равен: $a";
}
?>
При передаче по ссылке перед параметром ставится знак амперсанда: function get(&$a). Теперь интерпретатор будет передавать не значение переменной, а ссылку на эту переменную в памяти, в итоге, переменная $number после передачи на место параметра &$, a также будет изменяться.
1.7.10.Область видимости переменной
При использовании переменных и функций следует учитывать области видимости переменных. Область видимости задает область действия, доступности данной переменной.
Локальные переменные Локальные переменные создаются внутри функции. К таким переменным
можно обратиться только изнутри данной функции. Например:
<?php
function get($lowlimit, $highlimit)
{
$result = 0; // возвращаемое значение for($i = $lowlimit; $i < $highlimit; $i++)
{
$result+= $i * $i;
}
return $result;
}
$a = $result; // так нельзя написать, так как $resultлокальная переменная echo "Сумма квадратов от 1 до 9 равна $a";
?>
87
В данном случае в функции get() определена локальная переменная $result. И из общего контекста мы не можем к ней обратиться, то есть написать $a = $result; нельзя, так как область действия переменной $result ограничено функцией get(). Вне этой функции переменной $result не существует.
То же самое относится и к параметрам функции: вне функции параметры $lowlimit и $highlimit также не существуют.
Как правило, локальные переменные хранят какие-то промежуточные результаты вычислений, как и в примере выше.
Статические переменные На локальные переменные похожи статические. Они отличаются тем, что
после завершения работы функции их значение сохраняется. При каждом новом вызове функция использует ранее сохраненное значение. Например:
<?php
function getCounter()
{
static $counter = 0; $counter++; echo $counter;
}
getCounter(); // counter=1 getCounter(); // counter=2 getCounter(); // counter=3 ?>
Чтобы указать, что переменная будет статической, к ней добавляется ключевое слово static. При трех последовательных вызовах функции getCounter() переменная $counter будет увеличиваться на единицу. Если бы переменная $counter была обычной нестатической, то при каждом вызове функция getCounter() выводила бы 1.
Как правило, статические переменные служат для создания различных счетчиков, как в примере выше.
Глобальные переменные Иногда требуется, чтобы переменная была доступна везде, глобально.
Подобные переменные могут хранить какие-то общие для всей программы данные. Для определения глобальных переменных используется ключевое слово global:1
<?php
function getGlobal()
{
global $gvar; $gvar = 20;
echo "$gvar <br />";
}
88
getGlobal(); echo $gvar; ?>
После вызова функции getGlobal() к переменной $gvar можно будет обратиться из любой части программы.
1.7.11.Подключение внешних файлов
Если программа небольшая, кода немного, то все операции можно определить и в одном файле. Однако, как правило, программы составляет множество инструкций. При определении всех этих инструкций в одном файле код может выглядеть слишком громоздким. Поэтому часто отдельные части кода распределяют по отдельным файлам, особенно когда эти части кода можно использовать в других программах на PHP.
Инструкция include
Инструкция include подключает в программу внешний файл с кодом php. Например, определим файл factorial.php:
<?php
function getFactorial($n)
{
$result=1;
for($i=1; $i <= $n; $i++) $result*=$i;
return $result;
}
?>
Здесь происходит вычисление факториала. Теперь подключим данный файл в нашу программу:
<?php
include "factorial.php";
$a = 5;
$fact = getFactorial($a);
echo "Факториал числа $a равен $fact"; ?>
В место определения инструкции include будет вставляться весь код из файла factorial.php. При этом вставка файла должна происходить до использования функции, определенной в этом файле.
Инструкция include_once
89