2011-12-28 24 views
12

Me gustaría hacer algo como esto: echo $myObject->value_$id pero no conozco la sintaxis adecuada y no estoy seguro de si es posible.Obteniendo variable de objeto usando cadena + variable

$id es una variable PHP, por ejemplo, tiene valor 1. Al final, me gustaría obtener $myObject->value_1 pero el número de pieza (1) debería ser dinámico.

+1

¿Por qué no utilizar una matriz? – omnidan

+0

Tengo curiosidad por cómo hacerlo en modo usando '->' – simPod

+0

'$ myObject-> myArray [" element "];' or '$ myObject-> myArray [$ id];'. Creo que usar matrices es una mejor manera de hacerlo de todos modos. Pero, ¿qué es exactamente lo que quieres hacer? – omnidan

Respuesta

23

La función se denomina variable properties:

<?php 

$myObject = (object)NULL; 
$myObject->value_1 = 'I am value nr 1'; 

$id = 1; 
echo $myObject->{"value_$id"}; 
+0

Nunca he visto antes de lanzar NULL a un objeto ^^ Interesante idea ;-) – Armin

+0

@Armin - Espera un poco más de StackOverflow y verás cosas más extrañas :) –

+0

¡Ese es el código que estaba buscando! – simPod

3
$name = "value_" . $id; 
echo $myObject->$name; 
+0

¿Y no puedo unir variables y cadenas en la segunda línea de alguna manera? – simPod

4

Esto funciona:

$variableName = 'value_whatever_1337'; 
echo $myObject->$variableName; 
+0

¿Y no puedo unir variable y cadena en la segunda línea de alguna manera? – simPod

+0

¡Podría, pero esta no es la manera recomendada si desea mantener su código claro y fácil de leer! – Armin

+0

Ok, lo pensaré. gracias – simPod

Cuestiones relacionadas