Il existe deux manières de transmettre les paramètres d'une fonction PHP : Copy Pass : mécanisme par défaut, la fonction reçoit une copie de la valeur du paramètre et les modifications n'affectent pas la variable d'origine. Passe de référence : la fonction reçoit une référence à la variable d'origine et les modifications affectent directement la variable d'origine.
Mécanisme de passage des paramètres de la fonction PHP
En PHP, lors du passage des paramètres à une fonction, il existe deux mécanismes de transfert :
Copy Pass
Les paramètres de fonction adoptent le mécanisme de transmission de valeur par défaut, c'est-à-dire qu'une copie de la valeur du paramètre est créée à l'intérieur de la fonction. Toute modification apportée à la copie n'affecte que les variables comprises dans la portée de la fonction, et non les variables d'origine en dehors de la fonction.
function add($a, $b) { $a = $a + $b; // 只修改函数内部的 $a 副本 } $x = 1; $y = 2; add($x, $y); // 传值到函数 echo $x; // 仍为 1,未受函数内更改的影响
Reference Pass
En ajoutant le symbole &
devant le paramètre, le mécanisme de passe de référence peut être implémenté. De cette façon, le fonctionnement interne de la fonction n'est plus une copie de la valeur, mais modifie directement la variable d'origine.
function add_ref(&$a, &$b) { $a = $a + $b; // 直接修改原变量 } $x = 1; $y = 2; add_ref($x, $y); // 传引用到函数 echo $x; // 现在为 3,因函数内修改了原变量
Cas pratique :
Un exemple courant est la fonction de pagination des données du tableau. Nous devons transmettre des paramètres tels que le numéro de page actuel et le nombre d'enregistrements par page à la fonction de pagination. Si le mécanisme de transmission de valeurs est utilisé, la fonction de pagination ne peut fonctionner que sur des copies de paramètres et ne peut pas modifier les paramètres tels que les décalages et les restrictions dans les instructions de requête de base de données. Par conséquent, dans ce cas, le mécanisme de passage par référence doit être utilisé pour garantir que la fonction de pagination peut modifier les paramètres d'origine.
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); // 传引用修改全局变量
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!