Home  >  Article  >  Backend Development  >  PHP learning function

PHP learning function

不言
不言Original
2018-04-09 16:02:191011browse

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.';
}

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++;
}
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++;
}
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 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 )

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

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()
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('World'); # Hello World

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

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)

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"));

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!

Statement:
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
Previous article:PHP learning stringNext article:PHP learning string