[PHP] [résolu] Références/Pointeurs

  • Auteur de la discussion Auteur de la discussion SuperPJ
  • Date de début Date de début
WRInaute occasionnel
Voilà mon script :
_____________________________
$a = 'hello';
$b = &$i." - $a\n";

for ($i=1;$i<=3;$i++)
{
echo $b;
};
_____________________________

Je voudrais que le résultat soit :
1 - hello
2 - hello
3 - helo

Mais le script m'affiche :
123 :'(

Notez que le script final est beaucoup plus complexe, mais ce que je veux faire c'est stocker dans $b une chaine de caractères qui contient un alias de $i. Je précise que $b doit être défini avant la boucle FOR.

Comment faire ? :-(
 
WRInaute accro
rottman a dit:
Ou :

$a = "hello";

function ligne($i) {
echo "$i - $a";
}

for ($i=1;$i<4;$i++)
{
ligne($i);
};

hhmm, $a est vide dans ta fonction ligne(), tu l'a pas déclarée en globale.


>> echo "$i - $a\n";
echo "$i - $a<br/>"; plutôt
 
WRInaute impliqué
Re:
PHP:
 Références/Pointeurs question simple réponse diffi[/b]

[quote="SuperPJ"]Voilà mon script :
_____________________________
$a = 'hello';
$b = &$i." - $a\n";
[/quote]

La référence & n'a rien à faire là. Ce que tu veux faire c'est faire une evaluation à l'intérieur de ta boucle sachant que le code de l'évaluation doit être défini avant la boucle.

La meilleure solution pour faire ce que tu veux faire est de créer une fonction anonyme:
[code]$b = create_function( '', 'global $i,$a; return $i." - ".$a;');[/code]

Ensuite tu fais ta boucle
[code]for ($i=1;$i<=3;$i++)
{
echo $b();
}
[/code]
 
WRInaute occasionnel
Re:
PHP:
 Références/Pointeurs question simple réponse diffi[/b]

[quote="shrom"]$b = create_function( '', 'global $i,$a; return $i." - ".$a;');

for ($i=1;$i<=3;$i++)
{
echo $b();
}[/quote]
Excellent Shrom, c'est exactement ce que je voulais faire !! :o 

Sinon j'ai aussi trouvé mon bonheur dans la fonction 'eval()', mais elle est beaucoup moins pratique à utiliser que ta méthode, dans mon cas précis (qui est beaucoup plus complexe que le code que j'ai cité en exemple).

Bref merci à toi, mais aussi à Rottman pour avoir tenté de m'aider c'est toujours sympa ;)


PS : E-kiwi vu ta réponse tu n'es pas une demoiselle en effet ;) (hélas :P )
 
WRInaute impliqué
Re:
PHP:
 Références/Pointeurs question simple réponse diffi[/b]

[quote="SuperPJ"]Sinon j'ai aussi trouvé mon bonheur dans la fonction 'eval()',[/quote]

'eval()' est une fonction très gourmande en ressources système, si tu as la possibilité, il vaut mieux utiliser les fonction anonymes avec 'create_function()'
 
Discussions similaires
Haut