|
Que font les références ?Les références vous permettent de faire pointer deux variables sur le même contenu. Par exemple, lorsque vous faites :
<?php $a =& $b; ?> cela signifie que “$a” et “$b” pointent sur le même contenu.
La même syntaxe peut être utilisée avec les fonctions qui retournent des références, et avec l’opérateur “new” (PHP 4.0.4 et plus récent):
<?php $bar =& new fooclass(); $foo =& find_var($bar); ?>
<?php $var1 = "Variable Exemple"; $var2 = ""; function global_references($use_globals) { global $var1, $var2; if (!$use_globals) { $var2 =& $var1; // visible uniquement dans la fonction } else { $GLOBALS["var2"] =& $var1; // visible également dans un contexte global } } global_references(false); echo "var2 est défini à '$var2'\n"; // var2 est défini à '' global_references(true); echo "var2 est défini à '$var2'\n"; // var2 est défini à 'Variable Exemple' ?>Voyez “global $var;” comme un raccourci pour “$var =& $GLOBALS[’var’];”. De ce fait assignant d’autres références à “$var” changeant uniquement la référence locale de la variable. |
<?php $ref = 0; $row =& $ref; foreach (array(1, 2, 3) as $row) { // faites quelque chose } echo $ref; // 3 - le dernier élément du tableau itéré ?>
<?php $top = array( 'A' => array(), 'B' => array( 'B_b' => array(), ), ); $top['A']['parent'] = &$top; $top['B']['parent'] = &$top; $top['B']['B_b']['data'] = 'test'; print_r($top['A']['parent']['B']['B_b']); // array() ?>| Le deuxième intérêt des références est de pouvoir passer des variables par référence. On réalise ceci en faisant pointer des variables locales vers le contenu des variables de fonction. Exemple :
<?php function foo(&$var) { $var++; } $a=5; foo($a); ?> “$a” vaut 6. Cela provient du fait que dans la fonction “foo”, la variable “$var” pointe sur le même contenu que “$a”. Voir aussi les explications détaillées dans passage par référence. Le troisième intérêt des références est de retourner des valeurs par référence. Travail collaboratifContribuez, en ajjoutant des elements a cette page de manuel : Merci de votre aide |