${$var} capricieux [Résolu]

Messages postés
46
Date d'inscription
samedi 12 janvier 2008
Statut
Membre
Dernière intervention
12 décembre 2015
-
Bonjour,
j'ai créé cette fonction et ça ne ..."fonctionne" pas.
<?php
//$j1x and $J2x are set before this function and contain integers
function cssj($jmax)
{
$j=1;
while($j<=$jmax)
{
$nomvar='J'.$j.'x';
if (isset(${$nomvar})){echo '<div id="j'.$j.'"><img src="img/blit/jaune.png"></div>';} //don't work
$j++;
echo $j;//work
echo ${$nomvar};//don't work
}
}
cssj(40);
?>

La fonction est bien appelée et exécuté, mais l'étape du ${$nomvar} ne semble pas fonctionner, alors qu’elle fonctionne bien dans mes autres codes (sans fonctions).

Merci d'avance.


EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
Afficher la suite 

1 réponse

Messages postés
25792
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 juin 2019
312
0
Merci
Bonsoir,


//$j1x and $J2x are set before this function and contain integers



alors qu’elle fonctionne bien dans mes autres codes (sans fonctions).

Tout est dit !
===>>> sans fonctions


Penches toi sur ce qu'on appelle la portée des variables !


Une variable définie en dehors d'une fonction... n'y est pas disponible
( de même qu'une variable définie DANS une fonction.. n'est pas disponible en dehors ! )



Rom1sab
Messages postés
46
Date d'inscription
samedi 12 janvier 2008
Statut
Membre
Dernière intervention
12 décembre 2015
3 -
Merci, le code fonctionne comme ceci:
$nomvar='J'.$j.'x';
global ${$nomvar};
$varJ=${$nomvar};
if (isset($varJ)){echo '<div id="j'.$j.'"><img src="img/blit/jaune.png">
</div>';}
Commenter la réponse de jordane45