2012-08-27 6 views
5

Tôi đang làm việc chống lại một API mà mang lại cho tôi một đối tượng stdClass trông như thế này (dữ liệu thực tế thay thế)Làm thế nào để làm cho đối tượng PHP stdClass có cùng tên?

"data": [ 
    { 
     "type": "image", 
     "comments": { 
     "data": [ 
      { 
      "created_time": "1346054211", 
      "text": "Omg haha that's a lot of squats", 
      "from": {}, 
      "id": "267044541287419185" 
      }, 
      { 
      "created_time": "1346054328", 
      "text": "Fit body", 
      "from": {}, 
      "id": "267045517536841021" 
      }, 
     ] 
     }, 
     "created_time": "1346049912", 
    }, 

Làm thế nào là nó có thể để tạo ra một đối tượng stdClass như "Ý kiến" rằng có nhiều lĩnh vực phụ tất cả có cùng tên nhưng dữ liệu khác nhau. Khi tôi cố gắng để tạo ra một stdClass trông như thế này phần Bình luận của tôi sẽ chỉ chứa 1 đầu vào đó là một trong những cuối cùng trong vòng lặp while. Vì vậy, thay vì áp dụng ở phía dưới, nó sẽ thay thế dữ liệu cũ bằng dữ liệu mới. Cách sửa lỗi này?

Trả lời

11

"comments" là một đối tượng với một chìa khóa "data" mà là một mảng của các đối tượng . Bạn không thể sử dụng lại cùng một khóa bằng bất kỳ ngôn ngữ nào, JSON, PHP, stdClass hoặc cách khác. Bạn muốn tạo một mảng của các đối tượng tương tự.

$comments = new stdClass; 
$comments->data = array(); 

for ($i = 0; $i < 2; $i++) { 
    $comment = new stdClass; 
    $comment->text = 'Lorem ipsum...'; 
    ... 
    $comments->data[] = $comment; 
} 

var_dump($comments); 
+0

Câu trả lời hay. Ví dụ tốt :) Điều này sẽ khiến tôi mất nhiều thời gian để tìm ra nếu tôi không nhận được sự giúp đỡ của bạn. Cám ơn! –