Heim > Backend-Entwicklung > PHP-Problem > So schreiben Sie eine PHP-Callback-Funktion

So schreiben Sie eine PHP-Callback-Funktion

silencement
Freigeben: 2023-02-24 18:08:01
Original
3883 Leute haben es durchsucht

So schreiben Sie eine PHP-Callback-Funktion

Die Definition und der Aufruf gewöhnlicher Funktionen ähneln denen von js. Auch wenn ein Rückgabewert vorhanden ist, muss dieser bei der Deklaration nicht hinzugefügt werden .

In späteren PHP-Versionen wurde eine sehr nützliche Funktion hinzugefügt, nämlich dass sie aufgerufen werden kann, bevor die Funktion definiert wird.

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>";
Nach dem Login kopieren

Das Folgende ist eine sehr nützliche Funktion, nämlich die Variablenfunktion. Wie der Name schon sagt, wird die Funktion als Variable verwendet.

Der Vorteil besteht darin, dass Sie verschiedene Funktionen mit derselben Variablen aufrufen können, was dem polymorphen Aufruf von Funktionen sehr ähnlich ist.

$var="add";
echo $var(4,2);
echo "</br>";
$var="sub";
echo $var(4,2);
echo "</br>";
Nach dem Login kopieren

Die Rückruffunktion besteht darin, einen Prozess an eine Funktion zu übergeben, wenn die Übergabe eines einfachen Parameters das Problem nicht lösen kann, um den Zweck zu erreichen.

Die Übergabe einer Funktion als Parameter beim Aufruf einer Funktion ist ein Funktionsrückruf.

$arr=array(2,3,5,4,1,6,7,9,8);
var_dump($arr);
echo "</br>";
Nach dem Login kopieren
//这里是自定义回调函数,返回-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>";
Nach dem Login kopieren

Schreiben Sie Ihre eigene Rückruffunktion und verwenden Sie Variablenfunktionen und Rückrufe, um eine einfache Filterbedingung zu erfüllen. Wenn mehrere Bedingungen gleichzeitig erfüllt sein müssen, geben Sie ihr einfach eine &&-Beziehung.

Die verwendete Variablenfunktion kann mit einer Funktion namens call_user_func_array() im System aufgerufen werden. Sie verfügt über zwei Parameter: den Callback-Funktionsnamen und das Parameterarray

call_user_func_array("demo ", array (1,3)); Sein Vorteil besteht darin, dass die Anzahl der Parameter im Array geringer sein kann als die der ursprünglichen Funktion, selbst wenn Standardparameter vorhanden sind.

//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>";
Nach dem Login kopieren

Beachten Sie, dass wir beim Aufrufen einer Methode in einem Objekt ein anonymes Objekt übergeben und dann den Funktionsnamen angeben müssen.

Beim Aufruf einer statischen Methode in einer Klasse benötigen wir nur um den Klassennamen anzugeben.

In den beiden oben genannten Fällen können Sie die Variablenfunktion nicht vollständig verwenden. Sie können nur den Systemrückruf call_user_func_array() verwenden, bei dem es sich lediglich um eine Variablenfunktion zum Übergeben von Parametern handelt, ohne

class A{
    function one(){
    }
    static function two(){
    }}demo(200,array(new A,"one"));demo(200,array("A","two"));
Nach dem Login kopieren
aufzurufen

Das obige ist der detaillierte Inhalt vonSo schreiben Sie eine PHP-Callback-Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage