Полный цикл в digital

Параметры функции

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

Например, создадим и вызовем функцию с одним параметром:

<?
function hello($name)
{
echo "<h2>Hello $name</h2>";
}
hello("Tom");
hello("Bob");
hello("Sam");

Здесь функция hello определяет один параметр - $name. При наименовании параметров применяются те же правила, что и для переменных. Также название параметров начинается со знака доллара $. Единственное, что не нужно указывать значение для параметра.

function hello($name);

Внутри самой функции мы можем использовать параметр так же как обычные переменные. Например, в данном случае его значение выводится на веб-страницу:

echo "<h2>Hello $name</h2>";

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

Так, в данном случае функция определяет один параметр, соответственно при вызове функции передается только одно значение. Однако при каждом вызове это может быть разное значение:

hello("Tom");
hello("Bob");
hello("Sam");

Результат работы программы:

Hello Tom
Hello Bob
Hello Sam

Если мы не передадим значение для параметра: hello();, то мы столкнемся с ошибкой.

В качестве значения в функцию может передаваться и значение переменной:

$userName = "Tom";
hello($userName);

Подобным образом можно определять функции и с большим количеством параметров:

<?
function displayInfo($name, $age)
{
echo "<div>Имя: $name <br />Возраст: $age</div><hr>";
}
displayInfo("Tom", 36);
displayInfo("Bob", 39);
displayInfo("Sam", 28);

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

Имя: Tom
Возраст: 36

Имя: Bob
Возраст: 39

Имя: Sam
Возраст: 28

Необязательные параметры

Выше при определении функции мы были обязаны передать для всех параметров функции значения. Например, если функция определяет два параметра, соответственно нам надо передать в ее вызов два значения. Однако, PHP позволяет сделать параметры необязательными. Такие параметры имеют значение по умолчанию, которое применяется, если при вызове функции не передано никакого значения.

<?
function displayInfo($name, $age = 18)
{
echo "<div>Имя: $name <br />Возраст: $age</div><hr>";
}
displayInfo("Tom", 36);
displayInfo("Sam");

Здесь параметр $age определяется как необязательный. Для этого ему присваивается начальное значение - число 18. Причем если функция содержит обязательные и необязательные параметры, то необязательные параметры должны определяться в конце (как в данном случае параметр $age).

При первом вызове в функцию передаются два значения: displayInfo("Tom", 36), поэтому параметр $age получит второе значение - число 36.

Во втором вызове в функцию передается одно значение: displayInfo("Sam"), поэтому параметр $age будет использовать значение по умолчанию - число 18.

Имя: Tom
Возраст: 36

Имя: Sam
Возраст: 18

Именнованные параметры

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

<?
function displayInfo($name, $age = 18)
{
echo "<div>Имя: $name <br />Возраст: $age</div><hr>";
}
displayInfo(age: 23, name: "Bob");
displayInfo(name: "Tom", age: 36);
displayInfo(name: "Alice");

При вызове функции сначала указывается название параметра (без символа $) и через двоеточие указывается значение параметра : age: 23, name: "Bob". И в этом случае нам необязательно соблюдать позицию параметров.

Имя: Bob
Возраст: 23

Имя: Tom
Возраст: 36

Имя: Alice
Возраст: 18

Можно сочетать передачу значений параметрам по имени и по позиции. При этом любые именованные необязательные параметры должны располагаться после не именованных параметров:

displayInfo("Tom", age: 36);

Переменное количество параметров

В PHP функция может принимать переменное количество параметров. Для этого у функции определяется один параметр, перед которым указывается оператор ... (три точки). Такой параметр рассматривается как массив:

<?
function sum(...$numbers)
{
$result = 0;
foreach($numbers as $number) {
$result += $number;
}
echo "<p>Сумма: $result</p>";
}
sum(1, 2, 3);
sum(2, 3);
sum(4, 5, 8, 10);

При обращении к подобной функции мы можем передавать в нее различное количество значений. Результат:

Сумма: 6

Сумма: 5

Сумма: 27

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

<?
function sum(...$numbers)
{
$result = 0;
foreach($numbers as $number) {
$result += $number;
}
echo "<p>Сумма: $result</p>";
}
$numbers = [3, 5, 7, 8];
sum(...$numbers);           // 23
?>

Если функция должна принимать и другие параметры, то параметр, который представляет переменное количество значений, указывается в конце после остальных параметров.

Например, определим функцию, которая принимает имя студента и неопределенное количество его баллов успеваемости и выводит средний балл:

<?
function getAverageScore($name, ...$scores)
{
$result = 0.0;
foreach($scores as $score) {
$result += $score;
}
$result = $result / count($scores);
echo "<p>$name: $result</p>";
}
getAverageScore("Tom", 5, 5, 4, 5);
getAverageScore("Bob", 4, 3, 4, 4, 4);

Баллы успеваемости передаются через параметр $scores, который указывается в конце списка параметров. В самой функции для вычисления среднего балла все баллы складываются и делятся на их количество. Количество элементов массива можно подсчитать с помощью встроенной в PHP функции count(), в которую передается массив.

Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг