¿Cómo concatenar el nombre de la variable PHP?

Tengo un PHP para bucle:

for ($counter=0,$counter<=67,$counter++){

echo $counter;
$check="some value";

}

Lo que estoy tratando de lograr es usar la variable de bucle for y agregarla al nombre de otra variable.

Básicamente, quiero que la salida de PHP sea la siguiente para cada fila

1
$check1="some value"

2
$check2="some value"

3
$check3="some value"

4
$check4="some value"

etc etc 

He tratado $check.$counter="some value" pero esto falla.

¿Cómo puedo conseguir esto? ¿Me estoy perdiendo algo obvio?

preguntado el 31 de julio de 12 a las 13:07

¿El uso de un array ser preferible a este método? $myVar = array(); for($i = 0; $i <= 67; $i++) { $myVar[] = "Some Value"; } -

4 Respuestas

La sintaxis adecuada para variables variables es:

${"check" . $counter} = "some value";

Sin embargo, yo muy desanimado este. Lo que está tratando de lograr probablemente se puede resolver de manera más elegante mediante el uso de arrays. Uso de ejemplo:

// Setting values
$check = array();
for ($counter = 0; $counter <= 67; $counter++){
    echo $counter;
    $check[] = "some value";
}

// Iterating through the values
foreach($check as $value) {
    echo $value;
}

Respondido el 26 de Septiembre de 17 a las 13:09

Gracias Tim, ¿hay una situación en la que esto sea aceptable o ya no se use esta funcionalidad? - Difuminar

@Smudger: En la parte superior de mi cabeza, no puedo pensar en un caso sólido en el que uno usaría variables variables. Mirando a la comentarios en la página de documentación podría darle algunas ideas sobre dónde podrían ser útiles. Solo tenga en cuenta que lo que lea allí puede no considerarse la mejor práctica. - tim cooper

La concatenación nunca es la solución "más limpia", pero puede haber casos en los que tenga código antiguo y altamente desarrollado que nunca tuvo la intención de correlacionar A+B donde simplemente es mucho más fácil hacer esto que reescribir cientos de líneas de código solo para reemplazar viejos tipos de variables con matrices - Nosajimiki

El único caso en el que puedo pensar donde los uso es con formularios HTML donde he construido entradas recursivamente. Cuando lo publique, se publicará como un conjunto de variables y no como una matriz; por lo tanto, llamarlos recursivamente puede ser más fácil con $_POST[${"myInputName".$i}] - Nosajimiki

Debe usar la sintaxis ${'varname'}:

for ($counter=0,$counter<=67,$counter++){
    echo $counter;
    ${'check' . $counter} ="some value";
}

esto funcionará, pero ¿por qué no usar simplemente una matriz?

$check[$counter] = "some value";

Respondido 31 Jul 12, 13:07

Esto es útil en algunos casos. Por ejemplo, si su aplicación tiene algo así como 2 entradas de idioma en DB.

echo $this->{'article_title_'.$language};

Eso es mucho más útil que, por ejemplo, esto;

if($language == 'mylanguage1')
    echo $this->article_title_mylanguage1;
else
    echo $this->article_title_mylanguage2;

Obviamente, esto es lo que no deberías tener que hacer en tu aplicación multilingüe, pero he visto casos como este.

Respondido 09 Jul 13, 19:07

Sí, es mi caso: obtuve entradas de 3 columnas en DB. Así que necesito hacer un bucle así desde un grupo de casillas de verificación: Patros

Una matriz lograría esto.

$check = array();

for($counter = 0; $counter <= 67; $counter++) {
    $check[] = "some value";
    var_dump($check[$counter]);
}

Respondido 31 Jul 12, 13:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.