Функции 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:

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

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

Возвратное значение return

Рассмотрим пример функции 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