PHP learning function

不言
Release: 2023-03-23 11:54:01
Original
999 people have browsed it

The content of this article is about the knowledge of functions in PHP learning. Now I share it with everyone. Friends in need can refer to it

Function definition

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

  2. Function names can be size-insensitive (actually, PHP's function names, method names, class Names are not case-sensitive);

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

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

<?php
Test(); # function test.

function test()
{
    echo 'function test.';
}
Copy after login

Parameters of the function

1. Value transfer

Changing the value of the parameter inside the function will not affect the value outside the function Parameter value:

<?php
$i = 1;
add($i);
echo $i; # 1

function add($test)
{
    $test++;
}
Copy after login
2. Pass by reference

Keep the parameter value 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 function:
func_num_args() — Return the number of parameters passed to the function
func_get_arg() — Return Specified parameters
func_get_args() — Returns the parameter 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, the syntax is ... Implement a variable number of parameter lists:

function sum(...$numbers) 
{
    $acc = 0;
    foreach ($numbers as $n) {
        $acc += $n;
    }
    return $acc;
}

echo sum(1, 2, 3, 4); # 10
Copy after login

Variable function

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

<?php
function foo() 
{
    echo "In foo()";
}

$func = 'foo';
$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('World'); # Hello World
Copy after login

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

<?php
$message = 'hello';

$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 in the definition When the time comes, a copy will be made and placed in use:

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

Function dynamic call

In PHP, in addition to directly calling the function, you can also call it through call_user_func() or call_user_func_array() Function indirect call 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

Related recommendations:

PHP Learning Array

PHP Learning WampSever                                                                    

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

Related labels:
source:php.cn
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
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!