IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

le '&' devant variable PHP


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 353
    Points : 184
    Points
    184
    Par défaut le '&' devant variable PHP
    Bonjour,

    que signifie le '&' devant une variable ?

    merci beaucoup

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ca signifie que c'est une variable ?!

  4. #4
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Points : 135
    Points
    135
    Par défaut
    Plus ou moins oui, mais pas exactement.
    C'est ce qu'on appel un pointeur sur variable. Et oui, il y a une différence

    Voici quelques exemples, qui seront plus parlant:

    avant tout, Une petite compréhension très grossière de comment fonctionne une variable php:
    Il faut comprendre que lorsque tu initialise une nouvelle variable, php va la créer avec un ID de référence, en quelque sorte.

    Par exemple si tu fais $test = "test";
    PHP va créer une nouvelle variable (avec l'id 1 par exemple) qui vaudra "test"
    Si tu fait de nouveau appel à cette variable, PHP ira chercher l'id 1 pour la modifier, l'écraser ou juste l'afficher.


    Premier exemple, avec une variable classique
    c'est à dire que $str aura pour valeur LE TEXT de la variable passée en paramètre
    Celle-ci est une NOUVELLE variable (id 2 par exemple) initialisée lors de l'appel de la fonction, et qui sera détruite à la fin de celle ci (d'où l'utilité indispensable de faire un return $str)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function upThis($str){
    	$str = strtoupper($str);
    	return $str;
    }
    $test = "text de test";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // TEST A:
    upThis($test); //dans ce cas il ne se passe rien, puisque la variable n'est pas écrasée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // TEST B:
    $test = upThis($test); // La c'est OK, $test = "TEXT DE TEST";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // TEST C:
    $test2 = upThis($test) // La c'est OK pour $test2 qui vaut donc "TEXT DE TEST", mais $test ne change pas et vaut toujours "text de test";

    Deuxième exemple avec un pointeur,
    c'est à dire que $str fait REFERENCE A LA VARIABLE que tu lui envoie en paramètre, Et donc la modifie directement
    Il ne s'agit ici pas d'une nouvelle variable, mais belle est bien de la varaible d'id 1, même si celle ci porte un nom différent (ici $str au lieu de $test) !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function upThis(&$str){
    	$str = strtoupper($str);
    	return $str
    }
    $test = "text de test";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // TEST A:
    upThis($test);
    // Dans ce cas donc, la variable $test est directement modifiée, pas besoin de la ré-écrasée.
    // Le résultat est donc OK, $test = "TEXT DE TEST";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // TEST B:
    $test = upThis($test); // Et ici également.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // TEST C:
    $test2 = upThis($test); // Ici les deux variables vallent "TEXT DE TEST", puisque $test2 est initialisé avec le retour de la fonction, et que $test est modifier par référence.

    Si je dis pas n'importe quoi, l'utilisation des pointeurs prends moins de ressources qu'une utilisation de variable, puisqu'il n'y a pas besoin de créer de variable temporaire dans la fonction,
    Et donc pas besoin de réinitialiser une variable plus ou moins grosse (gros textes, fichiers ...): Gain de performances.
    Cependant, il n'est pas toujours pratique d'utiliser les pointeurs, par exemple, dans le cas ou on aurait toujours besoin de la première variable:


    $userName = "Dupond";
    $userNameUP = upThis($userName); // "DUPOND"

    Dans ce cas précis, si tu avait utilisé un pointeur, tu n'aurais pas pu garder $userName en minuscule, celui ci aurait également été modifié.


    Troisième test (à vérifier):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function upThis(&$str){
    	$str = strtoupper($str);
    	return true;
    }
    Et là, normalement, le cas intéressant est le TEST C
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $test2 = upThis($test);
    //$test est modifié par référence, donc celle ci vaut "TEXT DE TEST"
    //$test2 prends le retour de la fonction, et vaut donc TRUE



    Voila voila, j'ai pas vraiment tester tout ça pour vérifier ma syntaxe, mais l'idée est la et je pense pas avoir dis trop de bêtises ^^

Discussions similaires

  1. [PHP-JS] Problème de variable PHP dans un script JS
    Par soad029 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/08/2005, 22h17
  2. [PHP-JS] passage de variable php a javascript
    Par limpins dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/07/2005, 11h54
  3. [FLASH MX2004] Recuperation d'une variable php
    Par Shooter dans le forum Flash
    Réponses: 2
    Dernier message: 30/06/2005, 09h37
  4. [Applet] récupérer une variable PHP ?
    Par Shiryu44 dans le forum Applets
    Réponses: 10
    Dernier message: 22/03/2005, 11h39
  5. [PHP-JS] variable php à récupérer en JS
    Par mussara dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 15/01/2005, 16h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo