2010-05-20 18 views
6

Puede ser una pregunta fácil para ustedes. no puede encontrarlo en googlePHP concatena variable

Estoy intentando concatenar el nombre de dos variables;

$i=0; 
for ($i=0;$i<5;$i++){ 
    if($array[$i]>0){ 

    $test.$i=//do something 
    }else{ 
    $test.$i=//do something 
    } 
} 

//echo $test0 gives me nothing. 
//echo $test1 gives me nothing. 

Sé que no puedo usar $ test. $ I pero no sé cómo hacer esto. ¿Alguna ayuda? ¡Gracias!

Respuesta

27
+0

buen enlace! +1 a ti. – FlyingCat

+1

¡Respuesta aceptada debido al enlace! : D – FlyingCat

+0

Las últimas dos líneas del código del OP implican que si $ i == 0, está intentando acceder a $ test0. En este caso, si $ test no está definido, entonces $ test evaluará la cadena vacía y {$ test. $ I} evaluará a "0". – Dazarath

1

Esto podría funcionar:

$varName = $test . $i; 
$$varName = ... 

¿Puedo pedir este último sólo cuando es NECESARIO?

+0

estoy tratando de bucle de dos dimensiones arrays..its difícil de explicar aquí, pero necesito concatenación para obtener lo Necesito. Gracias sin embargo. +1 – FlyingCat

6

Prueba esto:

for ($i=0;$i<5;$i++){ 
    $the_test = $test.$i; 
    if($array[$i]>0){ 
     $$the_test=//do something 
    } 
    else{ 
     $$the_test=//do something 
    } 
} 
+0

muchas gracias! +1 a ti. – FlyingCat

7

Estoy asumiendo que las variables se denominan $ test0, $ test1, ..., $ test5. Se puede utilizar el siguiente:

${"test".$i} 

Aunque, podría sugerir que usted gana $ probar una matriz y utiliza $ i como índice en su lugar? Es muy extraño usar $ i como índice para recorrer una lista de nombres de variables.

A modo de ejemplo, en lugar de:

$test0 = "hello"; 
$test1 = "world"; 

Uso:

$test[0] = "hello"; 
$test[1] = "world"; 
+0

Me gusta su sugerencia. Ya le di la respuesta aceptada a Simon. +1 sin embargo: D – FlyingCat