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

Последнее обновление: 12.03.2021

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

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

<?php
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");

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

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

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

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

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

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

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

displayInfo("Tom", 36);
displayInfo("Bob", 39);
displayInfo("Sam", 28);
?>

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

Передача параметров в функцию в PHP

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

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

<?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 при вызове функции значения можно было передать параметрам только по позиции. Именнованные параметры позволяют передавать значения параметрам по имени:

<?php
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". И в этом случае нам необязательно соблюдать позицию параметров.

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

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

displayInfo("Tom", age: 36);

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

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

<?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

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

<?php
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(), в которую передается массив.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850