Migration PHP4 - PHP5

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 : Migration PHP4 - PHP5

Re: Migration PHP4 - PHP5

par d&g » 24 nov. 2011, 11:48

Merci de l'information.
Ce qui me semble bizarre c'est qu'en utilisant un array "classique" l'anomalie n'est pas reproduite :

Par exemple :

Code : Tout sélectionner

$fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry'); while (list($key, $val) = each(($fruit))) { echo "$key => $val\n"; }
fonctionne très bien.

Cela viendrait donc de l'association du "each" avec "(($_REQUEST))" ?!?

Re: Migration PHP4 - PHP5

par Mazarini » 24 nov. 2011, 11:41

Bonjour,

Dans la doc il y a :
Assigner un tableau à une autre variable remet le pointeur du tableau original à zéro. À cause de ce comportement, nous aurions pu provoquer une boucle infinie dans notre exemple si nous avions assigné $fruit à une autre variable dans notre boucle.
Ce la semble dire que lors de l'interprétation ($toto) correspond à une réaffectation de $toto, comme si php lancait un calcul pour obtenir ($toto) alors qu'il prend $toto directement.

Migration PHP4 - PHP5

par d&g » 24 nov. 2011, 10:45

Bonjour,

Je migre une application PHP4 en PHP5 et je suis tombé sur une anomalie que je ne comprend pas,
et mes recherches sur le net ne m'ont pas apporté plus de réponse...

Le bout de code en question est celui-ci (le code n'est pas de moi) :

while(list($k,$v)=each(($_REQUEST))) {
...
}

Cela provoqué une boucle infinie en bouclant sur le premier item du tableau "$_REQUEST", mais lorsque j'enlève les parenthèses inutiles autour du "$_REQUEST" pour donner ceci :

while(list($k,$v)=each($_REQUEST)) {
...
}

Dans ce cas tout se passe bien.
Quelqu'un peut m'expliquer d'où cela vient ?
Merci.