Variables dynamiques à partir de PHP 7

Variables dynamiques à partir de PHP 7 - PHP - Programmation

Marsh Posté le 01-02-2019 à 15:05:19    

Bonsoir à tous,
 
J'ai migré mon site d'un hébergement PHP 5.6 à un PHP 7.2.. Dans les grandes lignes tout semble fonctionner sauf les pages sur lesquelles j'ai utilisé des variables dynamiques..
 
Une de mes variables par exemple est comme ceci :  
 
echo $tableau[$autretableau[$j].$i];
 
$tableau contient les clés marcel1 marcel2 polo1 polo2 (chaque clé a une valeur numérique)
$autretableau contient les clés 1 et 2 dont la valeur est marcel et polo
$i et $j sont des compteurs de 1 à 2
 
Pas de message d'erreur, mais il ne se passe rien
 
Je dois modifier cette variable pour qu'elle soit compatible avec PHP 7 mais je ne vois pas comment ; c'est sans doute une question de $$ ou/et de {}  
 
Y a t'il un surdoué pour m'expliquer ? :)
 
Merci :)


Message édité par zezette le 01-02-2019 à 15:10:30

---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
Reply

Marsh Posté le 01-02-2019 à 15:05:19   

Reply

Marsh Posté le 01-02-2019 à 15:52:40    

Je n'ai pas rencontré ce problème spécifiquement mais as tu essayé Google qui renvoie sur la doc officiel :
http://php.net/manual/fr/migration [...] g.indirect


---------------
D3
Reply

Marsh Posté le 01-02-2019 à 16:18:47    

En fait ça n'a rien avoir :) Cette variable est dans un for, et mon compteur $j atteint 3 et comme il n'y a pas d'index 3 , ça bug... Il faudrait faire un issset avant ; tout ça dans un for ça risque d'être compliqué  
 
Faut croire que PHP7 est plus strict que PHP5


Message édité par zezette le 01-02-2019 à 16:22:07

---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
Reply

Marsh Posté le 01-02-2019 à 17:44:01    

Bonjour,

 

Y a t-il des indexes supérieurs à 3 ?
Non --> ben pourquoi tu vas jusqu'à 3 et non jusqu'à 2 ?
Oui --> pourquoi il n'y a pas de 3 ? http://php.net/manual/fr/control-s [...] ntinue.php ou http://php.net/manual/fr/control-s [...] oreach.php


Message édité par MaybeEijOrNot le 01-02-2019 à 17:47:38

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 01-02-2019 à 18:09:36    

Ben parce qu'un for va jusqu’à 1 trop loin :
 
for($i=1;$i<7;$i++)
{
  for($j=1;$tableau[$autretableau[$j].$i] && $j<=2;$j++)
     echo  $tableau[$autretableau[$j].$i];
}

Message cité 1 fois
Message édité par zezette le 01-02-2019 à 22:39:18

---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
Reply

Marsh Posté le 01-02-2019 à 19:51:34    

zezette a écrit :

Ben parce qu'un for va jusqu’à 1 trop loin :
 
for($i=0;$i<7;$i++)
{
  for($j=0;$tableau[$autretableau[$j].$i] && j<2;$j++)
     echo  $tableau[$autretableau[$j].$i];
}


 

Code :
  1. for($i=0;$i<7;$i++)
  2. {
  3.   for($j=0;$tableau[$autretableau[$j].$i] && $j<2;$j++)
  4.      echo  $tableau[$autretableau[$j].$i];
  5. }


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 01-02-2019 à 19:54:19    

C'était pas un copier coller, c'est pas mon code, cette faute de frappe n'a rien avoir avec mon problème ;)


---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
Reply

Marsh Posté le 01-02-2019 à 20:05:24    

Donc là dans ta boucle, ton $j va jusqu'à 3 ? Alors qu'il ne devrait être que 0 ou 1 dans la boucle et 2 une fois sorti de la boucle.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 01-02-2019 à 20:25:06    

Pourtant ça fonctionne :  http://tpcg.io/BOLKdN  

Code :
  1. <?php
  2.          $myArray['a1'] = 1;
  3.          $myArray['a2'] = 2;
  4.          $myArray['b1'] = 3;
  5.          $myArray['b2'] = 4;
  6.          $startKey[0] = 'a';
  7.          $startKey[1] = 'b';
  8.        
  9.          for( $i = 1; $i<3; $i++ ) {
  10.             for( $j = 0; $j<2; $j++ ) {
  11.                 echo $myArray[$startKey[$j] . $i];
  12.             }
  13.          }
  14.          echo '<br>';
  15.          for( $i = 0; $i<2; $i++ ) {
  16.             for( $j = 1; $j<3; $j++ ) {
  17.                 echo $myArray[$startKey[$i] . $j];
  18.             }
  19.          }
  20.       ?>


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 01-02-2019 à 22:43:53    

C'est la concaténation d'une valeur nulle (puisqu'il n'y a pas d'index 3) avec qqch qui bug :
 
$tableau[$autretableau[3].$i]
 
$tableau[null.$i]
 
En tous cas sur PHP 7.2.14


---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
Reply

Marsh Posté le 01-02-2019 à 22:43:53   

Reply

Marsh Posté le 01-02-2019 à 23:57:40    

Oui mais pourquoi tu arrives à l'index 3 ?


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 04-02-2019 à 08:57:51    

Bon... j'ai trouvé ; mon problème n'avait aucun rapport en fait...
 
Pour débugger j'avais affiché les erreur (et les notices)... Et comme ce code est dans un image générée (GD), la notice était dans le fichier image généré et l'image ne s'affichait pas...  
 


---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed