2012-04-19 31 views
6

thể trùng lặp:
Casing an Array with Numeric Keys as an ObjectPHP mảng đúc để phản đối

tôi đã đúc từ mảng phản đối và tôi bối rối:

$arr = range(1,3); 
$obj = (object) $arr; 
var_dump($obj) 

object(stdClass)#2 (5) { 
    [0]=> 
    int(1) 
    [1]=> 
    int(2) 
    [2]=> 
    int(3) 
} 

Câu hỏi đặt ra là : Làm thế nào để truy cập các thuộc tính đối tượng trong trường hợp này? $obj->0 gây ra lỗi cú pháp.

+0

lẽ '$ obj -> {0}' thất bại không? – halfer

Trả lời

4

Bạn không thể truy cập các thuộc tính đối tượng này trừ khi bạn quay trở lại mảng. Giai đoạn. Nếu bạn phải làm điều này vì một lý do nào đó, hãy đặt các khóa mảng thành một cái gì đó khác.

2

Trong trường hợp này, điều duy nhất tôi có thể nghĩ là để truy cập vào các thuộc tính sử dụng một foreach như thế này:

foreach($obj as $key => $value) 
    var_dump("$key => $value"); 

nhưng tất nhiên điều này sẽ không giải quyết được vấn đề cơ bản.

+0

Được rồi, đó không phải là vấn đề của tôi - tôi chỉ muốn biết. Tuy nhiên, một lần nữa, tôi đã thuyết phục bản thân rằng PHP là lạ. Xin lỗi vì trùng lặp! – biera

1

Dường như lớp ArrayObject có thể truy cập các thuộc tính

$a = new ArrayObject($obj); 
echo $a[0]; 
Các vấn đề liên quan