Définition des fonctions
Les noms de fonctions valides commencent par des lettres ou des traits de soulignement, suivis de lettres, de chiffres ou de traits de soulignement
Les noms de fonctions peuvent être insensibles à la taille (en fait, Les noms de fonctions PHP, les noms de méthodes et les noms de classes ne sont pas sensibles à la casse) ;
La fonction n'a pas besoin d'être définie avant l'appel, sauf si une fonction est définie de manière conditionnelle
PHP ne prend pas en charge ; surcharge de fonctions, et il n'est pas possible de dédéfinir ou de redéfinir les fonctions déclarées.
<?php Test(); # function test. function test() { echo 'function test.'; }
Paramètres de la fonction
1. Passage de valeur
modifie la valeur du paramètre à l'intérieur de la fonction, et cela n'affectera pas la valeur du paramètre en dehors de la fonction :
<?php $i = 1; add($i); echo $i; # 1 function add($test) { $test++; }
2. Le passage par référence
maintient la valeur du paramètre cohérente à l'intérieur et à l'extérieur de la fonction. Pour passer par référence, vous pouvez ajouter le symbole & devant le paramètre dans la définition de la fonction :
<?php $i = 1; add($i); echo $i; # 2 function add(&$test) { $test++; }
3 Nombre variable de paramètres
PHP supporte une variable. nombre de paramètres. Les paramètres répertoriés lors de la définition d'une fonction ne sont en fait que les paramètres minimaux ; plusieurs paramètres sont autorisés lors de l'appel, mais les paramètres supplémentaires seront ignorés :
function add($a, $b) { return $a + $b; } echo add(1,2,5); # 3
Dans PHP 5.5 et versions antérieures, si Si vous devez gérer un nombre incertain de paramètres, vous pouvez utiliser les fonctions suivantes :
func_num_args() — Renvoie le nombre de paramètres passés à la fonction
func_get_arg() — Renvoie les paramètres spécifiés
func_get_args() — Renvoie la liste d'arguments sous forme de tableau
<?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 )
En PHP 5.6 et versions ultérieures, un nombre variable de listes d'arguments sont implémentées par... la syntaxe :
function sum(...$numbers) { $acc = 0; foreach ($numbers as $n) { $acc += $n; } return $acc; } echo sum(1, 2, 3, 4); # 10
Variable Fonctions
PHP prend en charge le concept de fonctions variadiques - s'il y a des parenthèses après un nom de variable, PHP recherchera une fonction portant le même nom que la valeur de la variable et essaiera de l'exécuter :
<?php function foo() { echo "In foo()"; } $func = 'foo'; $func(); # In foo()
Remarque : les fonctions variables ne prennent pas en charge les structures de langage en PHP, telles que echo, print, etc.
Fonctions anonymes
En PHP, les fonctions anonymes, également appelées fonctions de fermeture, permettent la création temporaire d'une fonction sans nom spécifié. Paramètres couramment utilisés dans les fonctions de rappel :
<?php print_r(array_map(function($value) { return $value * 2; }, range(1, 5))); # Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )
Les fonctions de fermeture peuvent également être utilisées comme valeur de variables :
$greet = function($name) { printf("Hello %s\r\n", $name); }; $greet('World'); # Hello World
Les fermetures peuvent hériter des variables de la portée parent. Toutes ces variables doivent être transmises à l'aide de la construction du langage use :
<?php $message = 'hello'; $example = function () use ($message) { echo $message; }; $example(); # hello
Si vous devez retarder la liaison des variables utilisées, vous devez utiliser une référence, sinon une copie sera créée et utilisée lorsqu'elle sera utilisée. est défini :
<?php $result = 0; $one = function() use ($result) { var_dump($result); }; $two = function() use (&$result) { var_dump($result); }; $result++; $one(); # int(0) $two(); # int(1)
Appel de fonction dynamique
En PHP, en plus d'appeler des fonctions directement, vous pouvez également appeler des fonctions indirectement via call_user_func() ou call_user_func_array() fonction :
<?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"));
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!