невозможно добавить пары ключ-значение в сложный объект в php - PullRequest
0 голосов
/ 11 февраля 2020

Я пытаюсь создать следующий объект в PHP:

$obj= {abc@gmail.com:[usr:130,fname:'Bob',lname:'thekid',news:0,wres:1,SWAGLeaders:0]}

в конечном итоге $ obj будет иметь несколько адресов электронной почты, каждый из которых будет иметь собственный массив.

Вот что У меня так далеко:

    $obj = new stdClass();
    $obj->{$user[0]['email']}=[];

, где $user[0]['email] содержит адрес электронной почты.

моя проблема в том, что я не знаю, как добавить элементы в массив

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

Вы на правильном пути, если вам действительно нужен объект.

$user[0]['email'] = 'test';
$obj = new stdClass();
$obj->{$user[0]['email']} = ['usr' => 130, 'fname' => 'Bob', 'lname' => 'thekid', 'news' => 0, 'wres' => 1, 'SWAGLeaders' => 0];
echo json_encode($obj);

Вот вывод. http://sandbox.onlinephpfunctions.com/code/035266a29425193251b74f0757bdd0a3580a31bf

Но я лично не вижу необходимости в объекте, я бы go имел массив с немного более простым синтаксисом.

$user[0]['email'] = 'test';
$obj[$user[0]['email']] = ['usr' => 130, 'fname' => 'Bob', 'lname' => 'thekid', 'news' => 0, 'wres' => 1, 'SWAGLeaders' => 0];
echo json_encode($obj);

http://sandbox.onlinephpfunctions.com/code/13c1b5308907588afc8721c1354f113c641f8788

1 голос
/ 11 февраля 2020

Так же, как вы присвоили массив первому объекту.

$user[0]['email'] = "abc@gmail.com";
$obj = new stdClass;
$obj->{$user[0]['email']} = [];

$obj->{$user[0]['email']}[] = "Element 1";
$obj->{$user[0]['email']}[] = "Element 2";
$obj->{$user[0]['email']}[] = "Element 3";

var_dump($obj);
object(stdClass)#1 (1) {
  ["abc@gmail.com"]=>
  array(3) {
    [0]=>
    string(9) "Element 1"
    [1]=>
    string(9) "Element 2"
    [2]=>
    string(9) "Element 3"
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...