La définition et l'appel des fonctions ordinaires sont similaires à js. Cette définition ne nécessite pas de valeur de retour, même s'il existe une valeur de retour, il n'est pas nécessaire de l'ajouter lors de la déclaration. .
Dans les versions ultérieures de PHP, une fonctionnalité très utile a été ajoutée, à savoir qu'elle peut être appelée avant que la fonction ne soit définie.
echo add(1,2); echo "</br>"; function add($a,$b){ return $a+$b; } function sub($a,$b){ return $a-$b; } echo add(23,12); echo "</br>"; echo sub(23,22); echo "</br>";
Ce qui suit est une fonction très utile, qui est la fonction variable. Comme son nom l'indique, la fonction est utilisée comme variable.
L'avantage est que vous pouvez appeler différentes fonctions avec la même variable, ce qui est très similaire à l'appel polymorphe de fonctions.
$var="add"; echo $var(4,2); echo "</br>"; $var="sub"; echo $var(4,2); echo "</br>";
La fonction de rappel consiste à transmettre un processus à une fonction lorsque le passage d'un paramètre simple ne peut pas résoudre le problème, afin d'atteindre l'objectif.
Passer une fonction en paramètre lors de l'appel d'une fonction est un rappel de fonction.
$arr=array(2,3,5,4,1,6,7,9,8); var_dump($arr); echo "</br>";
//这里是自定义回调函数,返回-1是指将两个元素交换,0和1是不发生改变。 function myrule($a,$b){ if ($a>$b){ return 1; } elseif ($a<$b){ return -1; } else{ return 0; } } //usort就是系统函数,但是他的第二个参数是回调函数,这个函数参数就是排序规则 usort($arr,"myrule"); var_dump($arr); echo "</br>";
Écrivez votre propre fonction de rappel et utilisez des fonctions variables et des rappels pour remplir une condition de filtrage simple. Si plusieurs conditions doivent être satisfaites en même temps, attribuez-lui simplement une relation &&.
La fonction variable utilisée peut être appelée à l'aide d'une fonction appelée call_user_func_array() dans le système. Elle a deux paramètres : le nom de la fonction de rappel et le tableau de paramètres
call_user_func_array("demo ", array (1,3)); Son avantage est que le nombre de paramètres dans le tableau peut être inférieur à celui de la fonction d'origine, même lorsqu'il existe des paramètres par défaut.
//rule1除去数组中是三的倍数的数 function rule1($a){ if ($a%3==0){ return true; }else{ return false; } } //rule2是除去数组中的回文数(从左边读与从右边读是一样的) function rule2($a){ if ($a==strrev($a)){ return true; }else{ return false; } } function demo($n,$var){ for ($i=0;$i<$n;$i++){ if (call_user_func_array($var,array(23))) //if ($var($i)) { continue; }else{ echo $i."<br>"; } } } $var="rule1"; demo(100,$var); echo "</br>"; echo "<hr>"; $var="rule2"; demo(200,$var); echo "</br>";
Notez que lors de l'appel d'une méthode dans un objet, nous devons transmettre un objet anonyme puis spécifier le nom de la fonction
Lors de l'appel d'une méthode statique dans une classe, nous n'en avons besoin que. pour spécifier le nom de la classe.
Dans les deux cas ci-dessus, vous ne pouvez pas utiliser complètement la fonction variable. Vous ne pouvez utiliser que le rappel système call_user_func_array(), qui est juste une fonction variable pour transmettre des paramètres sans appeler
class A{ function one(){ } static function two(){ }}demo(200,array(new A,"one"));demo(200,array("A","two"));
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!