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

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

Posted by: admin July 12, 2020 Leave a comment

Questions:

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?

How to&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);