Maison  >  Article  >  développement back-end  >  Comment les paramètres des fonctions PHP sont-ils transmis ?

Comment les paramètres des fonctions PHP sont-ils transmis ?

WBOY
WBOYoriginal
2024-04-10 09:36:01956parcourir

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.

PHP 函数参数是如何传递的

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 : La fonction reçoit la valeur du paramètre Copier, modifications de la copie n'affectera pas la variable d'origine. Il s'agit du mécanisme de passage de paramètres par défaut en PHP.
  • Reference Pass : La fonction reçoit une référence à la variable d'origine, et sa modification affectera la variable d'origine.

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!

Déclaration:
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