2011-12-28 19 views
12

Chciałbym zrobić coś takiego: echo $myObject->value_$id, ale nie znam odpowiedniej składni i nie jestem pewien, czy jest to możliwe.Uzyskiwanie zmiennej obiektu przy użyciu ciągu znaków + zmiennej

$id jest jakaś zmienna PHP, na przykład ma wartość 1. W końcu, chciałbym dostać $myObject->value_1 ale część numer (1) powinny być dynamiczne.

+1

Dlaczego nie używać tablicy? – omnidan

+0

Ciekawi mnie, jak to zrobić, używając '->' – simPod

+0

'$ myObject-> myArray [" element "];' lub '$ myObject-> myArray [$ id];'. Myślę, że używanie tablic jest lepszym sposobem, aby to zrobić w każdym razie. Ale co dokładnie chcesz zrobić? – omnidan

Odpowiedz

23

Funkcja nazywa variable properties:

<?php 

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

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

Nigdy wcześniej nie widziałem rzucania NULL na obiekt ^^ Interesujący pomysł ;-) – Armin

+0

@Armin - Pospiesz się przez StackOverflow przez jakiś czas, a zobaczysz dziwniejsze rzeczy :) –

+0

To kod, którego szukałem! – simPod

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

. Czy nie mogę w jakiś sposób połączyć zmiennej i łańcucha w drugiej linii? – simPod

4

to działa:

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

I nie mogę w jakiś sposób połączyć zmiennej i łańcucha znaków w drugiej linii? – simPod

+0

Można, ale nie jest to zalecany sposób, aby zachować czytelność kodu i jego łatwą lekturę! – Armin

+0

Ok, pomyślę o tym. dzięki – simPod

Powiązane problemy