var_dump different

x@v
Mammouth du PHP | 570 Messages

30 mai 2008, 15:41

Bonjour,
je fais un var_dump sur des sessions en cour dans ma page
echo '<p>'.var_dump($_SESSION).'</p>';

Code : Tout sélectionner

array(4) { ["idCategorie"]=> &string(1) "2" ["caddie"]=> &array(2) { [2]=> int(3) [5]=> int(9) } ["nom"]=> &string(3) "x@v" ["civilite"]=> &string(2) "M." }
Je ne vois pas à quoi corresponde les & devant les types ?
Merci

Eléphant du PHP | 67 Messages

30 mai 2008, 16:03

En prog classique je sais que cela signifie que tu obtient la valeur par reférence; je suppose donc que dans ce cas, cela signifie que tu a dans le tableau, des reférence vers les valeurs des types (en memoire physiques). Mais ce n'est qu'une idée, donc a confirmer par quelqu'un de plud calé que moi

Eléphant du PHP | 185 Messages

30 mai 2008, 16:12

C'est tout à fait ça !
En gros, un emplacement mémoire peut avoir plusieurs références (plusieurs variables qui pointent vers le même contenu en mémoire).

Une référence n'est PAS un alias pour une autre variable.

Par défaut, lorsqu'on fait :
$var = 'toto';
Alors 'toto' à une référence : $var.

Si tu fais en plus :
$foo = &$var;
Alors 'toto' aura 2 références : $var et $foo.

Si tu fais :
unset($var);
'toto' existe toujours car une référence existe encore vers lui (c'est $foo).

Enfin, si tu fais :
unset($foo);
'toto' n'a plus de référence, donc il est supprimé de la mémoire.

@+

Eléphant du PHP | 67 Messages

30 mai 2008, 16:19

c'est bien ce que je pensait :) . Par contre je voulait savoir si il y avait une équivalence en PHP5 au pointeurs de la prog en C++ (ou autre language objet) mais a mon avis cela n'existe pas :twisted:

x@v
Mammouth du PHP | 570 Messages

31 mai 2008, 12:27

Mon problème est que je n'utilise pas les références dans mon programme ?
Je ne comprend pas d'où sa vient.
Et c'est inquiétant parce que tout fonctionne en local mais sur le serveur les sessions se mélange.
Quand je clique sur supprimer un élément du panier ou supprimer.
http://developpus.com/mvc/index.php?page=produits&cat=2
et que je suis connecté
http://developpus.com/mvc/index.php?page=connection
avec
login:x@v
mot de passe:cv
Il change ma session nom ?
j'ajoute qu'en local mon var_dump()
ne renvoie pas de variable avec référence

Code : Tout sélectionner

Array ( [idCategorie] => 1 [img] => Autumn_Leaves.jpg Tree.jpg Humpback_Whale.jpg [nomClient] => [chemin] => [caddie] => Array ( [16] => 1 [17] => 1 ) ) 1

ViPHP
ViPHP | 4674 Messages

31 mai 2008, 23:20

c'est bien ce que je pensait :) . Par contre je voulait savoir si il y avait une équivalence en PHP5 au pointeurs de la prog en C++ (ou autre language objet) mais a mon avis cela n'existe pas :twisted:
En PHP 5, les objets sont tous passés par référence, le reste est envoyé par valeur — par défaut —. Tu peux utiliser le signe & pour forcer un passage en référence (équivalent des pointeurs).
Mais je doute que la notion de pointeur existe dans un langage interprété …
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).