2011-12-28 46 views
12

Tôi muốn làm một cái gì đó như thế này: echo $myObject->value_$id nhưng tôi không biết cú pháp thích hợp và tôi không chắc chắn nếu nó có thể.Nhận biến đối tượng bằng cách sử dụng chuỗi + biến

$id là một số biến PHP, ví dụ có giá trị 1. Cuối cùng, tôi muốn nhận được $myObject->value_1 nhưng phần số (1) phải là động.

+1

Tại sao bạn không sử dụng một mảng? – omnidan

+0

Tôi tò mò làm thế nào để làm điều này bằng cách sử dụng '->' – simPod

+0

'$ myObject-> myArray [" phần tử "];' hoặc '$ myObject-> myArray [$ id];'. Tôi nghĩ rằng sử dụng mảng là một cách tốt hơn để làm điều này anyways. Nhưng chính xác thì bạn muốn làm gì? – omnidan

Trả lời

23

Tính năng này được gọi là variable properties:

<?php 

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

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

Tôi chưa bao giờ thấy trước khi truyền NULL đến một đối tượng ^^ Ý tưởng thú vị ;-) – Armin

+0

@Armin - Treo xung quanh StackOverflow một lúc và bạn sẽ thấy những thứ lạ hơn :) –

+0

Đó là mã tôi đang tìm kiếm! – simPod

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

Và tôi không thể tham gia biến và chuỗi trong dòng thứ hai bằng cách nào đó? – simPod

4

này hoạt động:

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

Và tôi không thể tham gia biến và chuỗi trong dòng thứ hai bằng cách nào đó? – simPod

+0

Bạn có thể, nhưng đây không phải là cách được khuyến nghị nếu bạn muốn giữ mã của mình rõ ràng và dễ đọc! – Armin

+0

Ok, tôi sẽ nghĩ về nó. cảm ơn – simPod

Các vấn đề liên quan