Maison > développement back-end > Problème PHP > Comment écrire une fonction de rappel php

Comment écrire une fonction de rappel php

silencement
Libérer: 2023-02-24 18:08:01
original
3884 Les gens l'ont consulté

Comment écrire une fonction de rappel php

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>";
Copier après la connexion

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>";
Copier après la connexion

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>";
Copier après la connexion
//这里是自定义回调函数,返回-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>";
Copier après la connexion

É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>";
Copier après la connexion

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"));
Copier après la connexion
.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal