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

1

7

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?

Lizzettelizzie answered 27/8, 2012 at 8:50 Comment(0)
A
23

"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);
Affect answered 27/8, 2012 at 8:58 Comment(1)
Good answer. Good example :) This would have taken me a loooong time to figure out if I didn't get your help. Thx!Lizzettelizzie

© 2022 - 2024 — McMap. All rights reserved.