Beim Ausführen von Funktionen/Methoden durch Abrufen von Funktions-/Methodennamen über Variablen in PHP5 und PHP7 kann es sein, dass derselbe Code aufgrund unterschiedlicher Interpretationsstrategien zwischen den Versionen nicht ausgeführt wird.
Beispiel
$a = ['add', 'sub']; class Test { public function add() { echo 1 + 2; } } $t = new Test(); $t->$a[0]();
Das obige Beispiel kann normal unter PHP5.6 laufen, aber unter PHP7 wird ein schwerwiegender Fehler ausgegeben: Der Funktionsname muss eine Zeichenfolge sein. Dies liegt daran, dass bei der Ausführung von $t->$a0 zuerst $a[0] ausgeführt wird, der Elementwert abgerufen wird und dann die spezifische Methode des Objekts ausgeführt wird.
Unter PHP7 wird $t->$a zuerst ausgeführt, wodurch ein Fehler ausgegeben und die Ausführung unterbrochen wird. Wenn Sie es normal unter PHP7 ausführen müssen, müssen Sie es in $t->{$a[0]}() ändern.
Spezifische Unterschiede finden Sie unter:
Weitere programmbezogene Inhalte finden Sie auf der chinesischen PHP-Website Einführung in die ProgrammierungKolumne!
Das obige ist der detaillierte Inhalt vonUnterschiede zwischen PHP5 und PHP7 hinsichtlich der Verwendung von Array-Elementen als dynamische Funktionsnamen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!