Home > Backend Development > PHP Tutorial > PHP learning summary function

PHP learning summary function

藏色散人
Release: 2023-04-08 06:56:01
forward
2890 people have browsed it

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;;
}
Copy after login

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++;
}
Copy after login

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++;
}
Copy after login

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
Copy after login

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 )
Copy after login

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
Copy after login

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()
Copy after login

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 )
Copy after login

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
Copy after login

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
Copy after login

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)
Copy after login

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"));
Copy after login

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

Related labels:
php
source:segmentfault.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template