Comportement des tableaux ???

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Comportement des tableaux ???

par Ajoloca » 04 févr. 2007, 23:39

Re,

Finalement c'est logique,
Si on réfléchit comme en C ==> référence == pointeur == adresse

Dans la première boucle rien n'est modifié mais à la fin, $v pointe vers adresse de $a[2].

Dans la seconde boucle $v, donc $a[2], se voit attribuer successivement 'zero', 'un' et au dernier passage comme il contient déjà 'un' il "réattribut" 'un'.

C'est un piège à c*ns!

par Cyrano » 04 févr. 2007, 23:31

Ha oui tiens.... j'avais pas relevé ce détail : essaye dont ton print_r() avant les boucles, je soupçonne le passage par référence de mettre la zone :-k

par Ajoloca » 04 févr. 2007, 23:26

Slt Cyrano,

Je m'attendais à avoir

Code : Tout sélectionner

Array ( [0] => zero [1] => un [2] => deux ET NON PAS un )

par Cyrano » 04 févr. 2007, 23:22

Je note deux choses :
- Tu fais deux boucles sans instruction;
- La première boucle contient un passage par référence qui n'a pas lieu d'être en PHP5

Ensuite, tu fais un print_r() sur ton tableau et l'affichage est tout ce qu'il y a de plus normal... donc au final, je saisis mal la question, tu t'attendais à quoi ?

Comportement des tableaux ???

par Ajoloca » 04 févr. 2007, 22:48

Bonjour,

Je fais une petite révision sur les tableaux et je tombe sur QQ chose de bizarre.

Avec ce code
$a = Array('zero', 'un', 'deux');
  foreach($a as &$v) {
  }
  foreach($a as $v) {
  }
  echo '<pre>';
  print_r($a);
  echo '</pre>';
J'obtiens ceci

Code : Tout sélectionner

Array ( [0] => zero [1] => un [2] => un )
Avez-vous une explication pour ce résultat ?
D'avance merci!