Home  >  Article  >  Backend Development  >  PHP learning summary function

PHP learning summary function

藏色散人
藏色散人forward
2019-12-30 13:45:522848browse

Function definition

Valid function names start with letters or underscores, followed by letters, numbers or underscores;

Function names can be size-insensitive (actually , PHP function names, method names, and class names are not case-sensitive);

Functions do not need to be defined before calling, unless a function is defined conditionally;

PHP does not support function overloading, and it is not possible to undefine or redefine declared functions.

<?php
Test(); # function test.
function test()
{
    echo &#39;function test.&#39;;
}

Function parameters

1. Value transfer

If the value of the parameter is changed inside the function, it will not Affects the value of the parameter outside the function:

<?php
$i = 1;
add($i);
echo $i; # 1
function add($test)
{
    $test++;
}

2. Passing by reference

Keeps the value of the parameter consistent inside and outside the function. To pass by reference, you can add the symbol & in front of the parameter in the function definition:

<?php
$i = 1;
add($i);
echo $i; # 2
function add(&$test)
{
    $test++;
}

3. Variable number of parameters

PHP supports a variable number of parameters . The parameters listed when defining a function are actually just the minimum parameters; multiple parameters are allowed when calling, but the extra parameters will be ignored:

function add($a, $b) 
{
    return $a + $b;
}
echo add(1,2,5); # 3

In PHP 5.5 and earlier versions, if If you need to handle an uncertain number of parameters, you can use the following functions:

func_num_args() — Returns the number of parameters passed to the function

func_get_arg() — Returns the specified parameters

func_get_args() — Returns the argument list as an array

<?php
function func() 
{
    $argc = func_num_args();
    $argv = func_get_args();
    switch ($argc) {
       case 0:
           echo "没有参数。<br />";
           break;
       case 1:
           echo "只有1个参数。它是:" . func_get_arg(0) . "。<br />";
           break;
       case 2:
           echo "有2个参数。它们是:" . func_get_arg(0) . "," . func_get_arg(1) . "。<br />";
           break;
       default:
           echo "超过2个参数。它们是:";
           print_r($argv);
           break;
    }
}
func();          # 没有参数。
func(1);         # 只有1个参数。它是:1。
func(1,2);       # 有2个参数。它们是:1,2。
func(1,2,3,4,5); # 超过2个参数。它们是:Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )

In PHP 5.6 and above, a variable number of argument lists are implemented by... syntax:

function sum(...$numbers) 
{
    $acc = 0;
    foreach ($numbers as $n) {
        $acc += $n;
    }
    return $acc;
}
echo sum(1, 2, 3, 4); # 10

Variable Functions

PHP supports the concept of variable functions - if there are parentheses after a variable name, PHP will look for a function with the same name as the variable's value and try to execute it:

<?php
function foo() 
{
    echo "In foo()";
}
$func = &#39;foo&#39;;
$func(); # In foo()

Note: Variable functions do not support language structures in PHP, such as echo, print, etc.

Anonymous function

In PHP, an anonymous function, also called a closure function, allows the temporary creation of a function without a specified name. Parameters commonly used in callback functions:

<?php
print_r(array_map(function($value) {
    return $value * 2;
}, range(1, 5)));
# Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )

Closure functions can also be used as the value of variables:

$greet = function($name) {
    printf("Hello %s\r\n", $name);
};
$greet(&#39;World&#39;); # Hello World

Closures can inherit variables from the parent scope. Any such variables should be passed in using the use language construct:

<?php
$message = &#39;hello&#39;;
$example = function () use ($message) {
    echo $message;
};
$example(); # hello

If you need to delay binding the variables in use, you need to use a reference, otherwise a copy will be made and placed in use when it is defined:

<?php
$result = 0;
 
$one = function() use ($result) { 
    var_dump($result); 
};
 
$two = function() use (&$result) { 
    var_dump($result); 
};
 
$result++;
 
$one();  # int(0)
$two();  # int(1)

Dynamic function call

In PHP, in addition to calling functions directly, you can also call functions indirectly through the call_user_func() or call_user_func_array() function:

<?php
function named_func($param1, $param2)
{
    echo "这是一个命名函数。参数是:$param1 和 $param2 。<br />";
}
call_user_func("named_func", "PARAM1", "PARAM2");
call_user_func_array("named_func", array("PARAM1", "PARAM2"));

The above is the detailed content of PHP learning summary function. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:segmentfault.com. If there is any infringement, please contact admin@php.cn delete