2011-12-28 10 views
12

Vorrei fare qualcosa del genere: echo $myObject->value_$id ma non conosco la sintassi corretta e non sono sicuro se sia possibile.Ottenere variabile oggetto utilizzando string + variabile

$id è una variabile PHP, ad esempio ha valore 1. Alla fine, mi piacerebbe ottenere $myObject->value_1 ma la parte numero (1) dovrebbe essere dinamica.

+1

Perché non utilizzare un array? – omnidan

+0

Sono curioso di sapere come farlo usando '->' – simPod

+0

'$ myObject-> myArray [" elemento "];' o '$ myObject-> myArray [$ id];'. Penso che usare gli array sia un modo migliore per farlo comunque. Ma cosa esattamente vuoi fare? – omnidan

risposta

23

La funzione è chiamata variable properties:

<?php 

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

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

Non l'ho mai visto prima di lanciare NULL su un oggetto ^^ Idea interessante ;-) – Armin

+0

@Armin - Aspetta StackOverflow per un po 'e vedrai cose più strane :) –

+0

Questo è il codice che stavo cercando! – simPod

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

E non posso unire variabile e stringa nella seconda riga in qualche modo? – simPod

4

Questo funziona:

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

E non posso unire variabile e stringa nella seconda riga in qualche modo? – simPod

+0

Si potrebbe, ma questo non è il modo consigliato se si desidera mantenere il codice chiaro e facile da leggere! – Armin

+0

Ok, ci penserò. grazie – simPod

Problemi correlati