2013-06-06 14 views
21

ho un questions.php file con una matrice come segue:creando nome della variabile concatenando le stringhe in PHP

$question12 = array("Which is the tallest mountain","Mt Everest"); 

Sto usando questo file in un altro file come segue:

require_once('questions.php'); 
$var = 12; 
$question = '$question'.$var.'[0]'; 
echo $question; 

Il sopra codice appena uscite stringa

$question12[0] 

Ma i desidera la variabile $ domanda per avere la stringa presente in $ question12 [0].

Come si fa .. ??

+0

Basta usare $ Domanda 12. [0] –

+0

perché no basta usare $ question12 [0] – amrinder007

+0

ovviamente ... utilizzando direttamente $ question12 [0] funziona..ma non è questo il punto .. voglio generare una variabile php .. e sono bloccato .. – Pradeep

risposta

50

variabile Variabile non è raccomandato, ma la risposta è qui sotto:

$question = ${'question'.$var}[0]; 
+3

http://php.net/manual/en/language.variables.variable.php –

+7

Perché la variabile variabile non è consigliata? – piersb

+0

@Piersv forse perché il dereferenziazione di una proprietà variabile che è un array ha una semantica diversa tra PHP 5 e PHP 7 e il fatto che questo può sempre essere aggirato usando un array. Non vedo altri aspetti negativi. – Adam

1

Basta usare $ Domanda 12. [0]. Ti darà l'output desiderato.

Utilizzando il $ var si può fare in questo modo: -

$question = ${'question'. $var}[index];

0

Stai cercando variabili variabili.

$id = 12; 
$q = "question{$id}"; 
$q = $$q[0]; 

Si consiglia di considerare seriamente l'analisi di matrici multidimensionali per interrompere la presenza di più matrici.

2

Siamo spiacenti, im andando a prendere un po 'odio per ricordare qualcosa evil ma ancora è una delle opzioni

<?php 
$question12 = array("Which is the tallest mountain","Mt Everest"); 
$var = 12; 
$question = '$question'.$var.'[0]'; 
eval("echo $question;"); 
?> 

PS: eval() è che evil

+4

'rename_function ('eval', 'evil');' ora ypu può usare la funzione 'evil' –

+1

haha! scherzi a parte però, eval è piuttosto male :) –

+0

Non usarlo però :) –