Несколько элементов PHP внутри массива stdclass (JSON) - PullRequest
0 голосов
/ 02 октября 2018

У меня есть массив внутри объекта, я хочу добавить несколько значений в массив, но мои коды начинают разделять их.Ответ должен выглядеть так:

{
    "requestTime": "1",
    "clients": [{
        "name": "Peter",
        "id": 905
    }]
}

Но вместо этого он выглядит так:

{
    "requestTime": "1",
    "clients": [{
        "name": "Peter"
    }, {
        "id": 905
    }]
}

Мой код:

$myObj = new stdClass();

$myObj->requestTime = $reqtime;
$myObj->clients[]->id = $id;
$myObj->clients[]->name = $name;

$myJSON = json_encode($myObj);

echo $myJSON;

Ответы [ 3 ]

0 голосов
/ 02 октября 2018

Попробуйте сделать что-то подобное:

$myObj->clients[] = ['id'=>$id, 'name'=>$name]
0 голосов
/ 02 октября 2018

Если я понял ваши требования в соответствии с требуемым выводом , тогда это будет работать для вас, вместо этого используйте вместо статической переменной id, name и requestTime переменную, которую я использовал.

<?php  
 $myObj = new stdClass();
 $myObj->requestTime = 1;
 $myObj->clients[] = ['id' => 905, 'name' => 'Peter'];
 $myJSON = json_encode($myObj);
 echo $myJSON;
?>

ВЫХОД:

{ 
 "requestTime": 1, 
 "clients": [{
   "id": 905, 
   "name": "Peter" 
  }] 
 }

ДЕМО: https://3v4l.org/T9W88

0 голосов
/ 02 октября 2018

Создайте массив всего за один раз, а не за 2 шага, что сгенерирует 2 массива.

$myObj = new stdClass();

$myObj->requestTime = $reqtime;
$myObj->clients[] = ['id' => $id, 'name' => $name];

$myJSON = json_encode($myObj);

echo $myJSON;
...