${$var} capricieux

Résolu
Rom1sab Messages postés 46 Date d'inscription samedi 12 janvier 2008 Statut Membre Dernière intervention 12 décembre 2015 - Modifié par jordane45 le 12/12/2015 à 03:05
Rom1sab Messages postés 46 Date d'inscription samedi 12 janvier 2008 Statut Membre Dernière intervention 12 décembre 2015 - 12 déc. 2015 à 03:28
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.

1 réponse

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
12 déc. 2015 à 03:09
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 ! )



0
Rom1sab Messages postés 46 Date d'inscription samedi 12 janvier 2008 Statut Membre Dernière intervention 12 décembre 2015 3
12 déc. 2015 à 03:28
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>';}
0
Rejoignez-nous