Es gibt zwei Möglichkeiten, PHP-Funktionsparameter zu übergeben: Copy Pass: Der Standardmechanismus, die Funktion erhält eine Kopie des Parameterwerts und Änderungen wirken sich nicht auf die ursprüngliche Variable aus. Referenzdurchlauf: Die Funktion erhält einen Verweis auf die Originalvariable und Änderungen wirken sich direkt auf die Originalvariable aus.
PHP-Funktionsparameter-Übergabemechanismus
In PHP gibt es beim Übergeben von Parametern an eine Funktion zwei Übertragungsmechanismen:
Copy Pass
Funktionsparameter übernehmen standardmäßig den Wertübergabemechanismus, d. h. eine Kopie des Parameterwerts wird innerhalb der Funktion erstellt. Alle Änderungen an der Kopie wirken sich nur auf Variablen innerhalb des Funktionsumfangs aus, nicht auf die ursprünglichen Variablen außerhalb der Funktion.
function add($a, $b) { $a = $a + $b; // 只修改函数内部的 $a 副本 } $x = 1; $y = 2; add($x, $y); // 传值到函数 echo $x; // 仍为 1,未受函数内更改的影响
Referenzpass
Durch Hinzufügen des &
-Symbols vor dem Parameter kann der Referenzpassmechanismus implementiert werden. Auf diese Weise ist die interne Operation der Funktion keine Kopie des Werts mehr, sondern ändert direkt die ursprüngliche Variable.
function add_ref(&$a, &$b) { $a = $a + $b; // 直接修改原变量 } $x = 1; $y = 2; add_ref($x, $y); // 传引用到函数 echo $x; // 现在为 3,因函数内修改了原变量
Praktischer Fall:
Ein häufiges Beispiel ist die Paging-Funktion von Tabellendaten. Wir müssen Parameter wie die aktuelle Seitennummer und die Anzahl der Datensätze pro Seite an die Paging-Funktion übergeben. Wenn der Wertübergabemechanismus verwendet wird, kann die Paging-Funktion nur mit Kopien von Parametern arbeiten und keine Einstellungen wie Offsets und Einschränkungen in Datenbankabfrageanweisungen ändern. Daher sollte in diesem Fall der Pass-by-Reference-Mechanismus verwendet werden, um sicherzustellen, dass die Paging-Funktion die ursprünglichen Parameter ändern kann.
function paginate($page_num, $per_page) { global $offset, $limit; // 全局变量 $offset = ($page_num - 1) * $per_page; $limit = $per_page; } // ... 获取 $page_num 和 $per_page 的值 ... paginate($page_num, $per_page); // 传引用修改全局变量
Das obige ist der detaillierte Inhalt vonWie werden PHP-Funktionsparameter übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!