2010-04-03 10 views
5

$ bookA = "123"; $ crack = "A";PHP - Variable à l'intérieur variable?

Je veux faire quelque chose de similaire à ceci:

echo $book$crack; 

telle que la sortie est .

Quelle est la syntaxe correcte pour la commande echo?

Merci.

+0

Lire qu'ils ont dit de tableau utiliser –

+0

Chaque réponse unique à cette question a été downvoted. Pourquoi?? – Josh

+0

Copie possible de [Noms de variables dynamiques en PHP] (http://stackoverflow.com/questions/9257505/dynamic-variable-names-in-php) –

Répondre

3
$varname = 'book'.$crack; 
echo $$varname; 
5

Ce sont appelés variable variables, mais vous devez utiliser arrays à la place.

+1

Pourquoi dites-vous qu'il devrait utiliser des tableaux, alors que nous n'avons pas expliqué pourquoi il doit le faire de cette façon. Peut-être que les données proviennent de la source dont il n'a aucun contrôle. Les tableaux sont complètement hors de propos à la question. –

+0

Parce que les tableaux ont plus de fonctionnalités (comme être facile à parcourir) et sont beaucoup plus lisibles dans le code. – Quentin

+1

"Peut-être que les données proviennent de la source dont il n'a aucun contrôle." - parce que l'évaluation des données tierces est une pratique terrible. Les données tierces ne doivent jamais interagir avec des noms réels de variables/fonctions/quoi que ce soit - la seule façon possible d'interagir est de travailler avec des données. – zerkms

9
echo ${"book" . $crack}; 
+0

Nice. J'ai appris quelque chose de nouveau aujourd'hui. – zaf

2

Cela fonctionne:

$bookA = "123"; 
$crack = "A"; 
$var = "book$crack"; 
echo $$var; 
+0

Je pense que vous voulez dire 'echo $$ var;'. –

+0

Vous avez raison, merci @FelixKling! – Josh

3

Vous pouvez utiliser un tableau associatif.

Par exemple:

$book = array(); 
$book["A"] = "Some Book"; 
$crack = "A"; 

//Later 
echo $book[$crack]; 
+3

L'utilisation de '" 'et' "' au lieu de '" 'peut conduire à des erreurs d'analyse bizarres;) – Progman

+0

Correction de, désolé, je ne me suis pas rendu compte que ceux-ci se faufilaient là: P –