Функция PHP - это кусок кода, который можно многократно использовать. Может принимать входные данные как список аргументов и возвращать значение. В PHP есть тысячи встроенных функций.
В PHP мы можем определить условную функцию, функцию внутри функции а так же рекурсивную функцию.
PHP функции определяются один раз, и могут быть вызваны многократно, как и собственно в других языках программирования.
Вам не нужно многократно писать одну и ту же логику. Используя функцию, вы можете написать логику только один раз и повторно использовать ее.
Функции PHP отделяют логику программирования. Поэтому легче понимать код приложения, потому что каждая логика разделена в виде функций.
Мы можем легко объявить и вызвать функцию определённую пользователем. Давайте посмотрим синтаксис, чтобы объявить пользовательские функции. мя функции может начинаться только с прописного латинского символа и нижнего подчёркивания. нельзя начинать имена с цифр или спец символов.
синтаксис:
function functionname(){
//code to be executed
}
PHP Functions Example
<?php
function sayHello(){
echo "Hello PHP Function";
}
sayHello();//calling function
?>
Output: Hello PHP Function
Мы можем передавать информацию в функции PHP через аргументы, которые разделены запятой.
PHP поддерживает вызов по значению (по умолчанию), вызов посредством ссылки, значения аргумента по умолчанию и список аргументов с переменной длиной.
Пример передачи одного аргумента в функции PHP:
<?php
function sayHello($name){
echo "Hello $name<br/>";
}
sayHello("Arjun");
sayHello("Krishna");
sayHello("Radha");
?>
Output: Arjun Krishna Radha
Пример передачи двухаргументов в функцию PHP
<?php
function sayHello($name,$age){
echo "Hello $name, you are $age years old<br/>";
}
sayHello("Arjun",21);
sayHello("Krishna",29);
sayHello("Radha",23);
?>
Output: Hello Arjun, you are 21 years old Hello Krishna, you are 29 years old Hello Radha, you are 23 years old
Значение, передаваемое в функцию, не изменяет фактическое значение по умолчанию (вызов по значению).
Но мы можем сделать это передав значение в качестве ссылки.
По умолчанию значение, передаваемое нв функцию, является вызовом по значению.
Чтобы пройти значение в качестве ссылки, вам необходимо использовать символ аперсанд (&) перед именем аргумента.
Рассмотрим простой пример вызова посредством ссылки в PHP:
<?php
function adder(&$str2)
{
$str2 .= 'Call By Reference';
}
$str = 'Hello ';
adder($str);
echo $str;
?>
Output: Hello Call By Reference
Мы можем указать значение аргумента по умолчанию в функции.
При вызове функции PHP, если вы не укажете какой-либо аргумент, функция примет этот аргумент по умолчанию.
Рассмотрим простой пример использования значения аргумента по умолчанию в функции PHP.
<?php
function sayHello($name="Krishna"){
echo "Hello $name<br/>";
}
sayHello("Arjun");
sayHello();//passing no value
sayHello("Radha");
?>
Output: Hello Arjun Hello Krishna Hello Radha
Рассмотрим пример функции PHP, которая возвращает значение.
<?php
function cube($n){
return $n*$n*$n;
}
echo "Cube of 3 is: ".cube(3);
?>
Output: Cube of 3 is: 27
Параметр излучения функция это функция с параметрами. Вы можете переживать любое количество параметров в функцию Переданные параметры действуют в качестве переменных внутри вашей функции. Они указаны внутри скобок, после имени функции. Вывод информации зависит от динамических значений, переданных в качестве параметров в функцию.
Пример 1. Сложение и вычитание:
В этом примере мы передали два параметра $ x и $ y внутрь двух функций add () и sub ().
<!DOCTYPE html>
<html>
<head>
<title>Parameter Addition and Subtraction Example</title>
</head>
<body>
<?php
//Adding two numbers
function add($x, $y) {
$sum = $x + $y;
echo "Sum of two numbers is = $sum <br><br>";
}
add(467, 943);
//Subtracting two numbers
function sub($x, $y) {
$diff = $x - $y;
echo "Difference between two numbers is = $diff";
}
sub(943, 467);
?>
</body>
</html>
Output: Sum of two numbers is = 1410 Difference between two numbers is = 476
Пример 2. Сложение и вычитание с динамическим числом:
In this example, we have passed two parameters $x and $y inside two functions add() and sub().
<?php
//add() function with two parameter
function add($x,$y)
{
$sum=$x+$y;
echo "Sum = $sum <br><br>";
}
//sub() function with two parameter
function sub($x,$y)
{
$sub=$x-$y;
echo "Diff = $sub <br><br>";
}
//call function, get two argument through input box and click on add or sub button
if(isset($_POST['add']))
{
//call add() function
add($_POST['first'],$_POST['second']);
}
if(isset($_POST['sub']))
{
//call add() function
sub($_POST['first'],$_POST['second']);
}
?>
<form method="post">
Enter first number: <input type="number" name="first"/><br><br>
Enter second number: <input type="number" name="second"/><br><br>
<input type="submit" name="add" value="ADDITION"/>
<input type="submit" name="sub" value="SUBTRACTION"/>
</form>
PHP позволяет вам вызывать функцию по значению и ссылке. В случае вызова PHP по значению фактическое значение не изменяется, если оно модифицировано внутри функции. Понять концепцию вызова по значению можно при помощи примера.
Пример 1.
В этом примере переменная $str была передана в функцию adder где она объединилась со строкой 'Call By Value'.
Но в результате вывода переменной только'Hello'.
Это потому что изменения произошли только в локальной переменной $str2,
и не отразились на переменной $str.
<?php
function adder($str2)
{
$str2 .= 'Call By Value';
}
$str = 'Hello ';
adder($str);
echo $str;
?>
Output: Hello
Пример2.
Попробуем понять концепцию вызова по значению
через другой пример.
<?php
function increment($i)
{
$i++;
}
$i = 10;
increment($i);
echo $i;
?>
:Output: 10
В случае вызова PHP по ссылке, фактическое значение изменяется,
если оно модифицировано внутри функции.
В таком случае вам нужно использовать символ & (амперсанд) с формальными аргументами.
Аперсанд(&) представляет собой ссылку на переменную.
Рассмотрим концепцию вызова по ссылке при помощи примера:
Пример1.
В этом примере переменная $str передана функции adder,
где онаобъеденилась со строкой 'This is Call By Reference'.
Здесь результат вывода преременной$str является 'This is Call By Reference'.
Это потому, что изменения произошли в фактической переменной $str.
<?php
function adder(&$str2)
{
$str2 .= 'Call By Reference';
}
$str = 'This is ';
adder($str);
echo $str;
?>
Output: This is Call By Reference
Пример 2:
<?php
function increment(&$i)
{
$i++;
}
$i = 10;
increment($i);
echo $i;
?>
Output: 11
PHP позволяет определить значения аргумента стилей C ++ по умолчанию. В том случае, если вы не передадите никакого значения функции, будет использован аргумент значения по умолчанию.
Пример 1:
<?php
function sayHello($name="Krishna"){
echo "Hello $name
";
}
sayHello("Arjun");
sayHello();//passing no value
sayHello("Radha");
?>
Output: Hello Arjun Hello Krishna Hello Radha
Пример 2:
<?php
function add($n1=10,$n2=10){
$n3=$n1+$n2;
echo "Addition is: $n3
";
}
add();
add(20);
add(40,40);
?>
Output: Addition is: 20 Addition is: 30 Addition is: 80
PHP поддерживает переменное количество аргументов функции. Это значит, что вы можете передавать 0 ,1 или n-е количество аргументов в функцию. Для этого вам нужно использовать троеточие перед именем аргумента. Концепция троеточия для переменной длинны аргумента реализована в РНР начиная с версии 5.6.
Пример:
<?php
function add(...$numbers) {
$sum = 0;
foreach ($numbers as $n) {
$sum += $n;
}
return $sum;
}
echo add(1, 2, 3, 4);
?>
Output: 10
Подобно как в С\С++, РНР так же поддерживает рекурсивные функции. В таком случае мы вызываем текущую функцию внутри функции. Это так же называется рекурсией. Рекомендуется избегать вызова рекурсивной функции с уровнем более 200-т повторений, потому что это может разбить стек и привести к прекращению скрипта.
Пример 1:
Вывод чисел
<?php
function display($number) {
if($number<=5){
echo "$number <br/>";
display($number+1);
}
}
display(1);
?>
Output: 1 2 3 4 5
Пример 2:
Факториал числа
<?php
function factorial($n)
{
if ($n < 0)
return -1; /*Wrong value*/
if ($n == 0)
return 1; /*Terminating condition*/
return ($n * factorial ($n -1));
}
echo factorial(5);
?>
Output: 120