Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make PHP stdClass Object that has the same name?

I'm working against an API that gives me an stdClass object that looks like this (actual data replaced)

"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",
    },

How is it possible to create an stdClass object like "Comments" that have multiple sub fields all with same name but different data. When I try to create an stdClass looking like this my Comments section will only contain 1 input which is the final one in the while loop. So instead of applying to the bottom it's replacing the old data with the new one. How to fix this?

like image 333
Sun_Blood Avatar asked Aug 27 '12 08:08

Sun_Blood


1 Answers

"comments" is an object with a key "data" which is an array of objects. You cannot reuse the same key in any language, JSON, PHP, stdClass or otherwise. You want to make an array of similar objects.

$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);
like image 81
deceze Avatar answered Nov 13 '22 06:11

deceze