Извлечь указанные c значения из объекта stdClass - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть следующий объект stdClass, содержащийся в $ response:

stdClass Object ( [domain] => stdClass Object ( [id] => d1111111 [spamscore] => 75 [rejectscore] => 200 ) [domainalias] => Array ( ) [wildcard] => Array ( ) [catchall] => Array ( ) [forward] => Array ( ) [mailbox] => Array ( 

[0] => stdClass Object ( [highEmailNotification] => [id] => m1111111 [lastPasswordChange] => 2020-02-19T22:41:12+00:00 [local] => mailbox1 [lowEmailNotification] => [quotaMB] => 10240 [receive] => 1 [rejectscore] => [send] => 1 [spamscore] => [usageMB] => 0 [enabled] => 1 )

[1] => stdClass Object ( [highEmailNotification] => [id] => m2222222 [lastPasswordChange] => 2020-02-17T15:46:21+00:00 [local] => mailbox2 [lowEmailNotification] => [quotaMB] => 10240 [receive] => 1 [rejectscore] => [send] => 1 [spamscore] => [usageMB] => 0 [enabled] => 1 )

[2] => stdClass Object ( [highEmailNotification] => [id] => m3333333 [lastPasswordChange] => 2020-02-19T15:00:36+00:00 [local] => mailbox3 [lowEmailNotification] => [quotaMB] => 1024 [receive] => 1 [rejectscore] => 0 [send] => 1 [spamscore] => 75 [usageMB] => 0 [enabled] => 1 ) ) [spamblacklist] => Array ( ) [spamwhitelist] => Array ( ) [responder] => Array ( ) [name] => domain.com )

Мне нужно преобразовать его в массив и извлечь конкретные значения, т.е. [id] и [local] отсюда.

Скорость также является проблемой, так как этот массив увеличится до тысяч элементов, поэтому, если есть другой, более быстрый путь, чем «foreach», он будет лучше.

Я использовал некоторые предложения, такие как:

$array = json_decode(json_encode($response), True);

foreach ($array as $var)
{
    echo $var['id'] . ' - ' . $var['local'] . "<br>";
}

и получил частичный успех с результатами:

d1111111 -

-

-

-

- i - i

(поэтому он нашел самое первое значение [id])

однако он пропустил самое важное значения, которые мне нужны.

Что мне нужно получить:

m1111111 - mailbox1

m2222222 - mailbox2

m3333333 - mailbox3

Любые предложения приветствуются.

1 Ответ

0 голосов
/ 20 февраля 2020

Значения, которые вы пытаетесь распечатать, находятся во вложенном массиве в пределах $response.

Попробуйте это.

$array = json_decode(json_encode($response['mailbox']), True);

foreach ($array as $var)
{
    echo $var['id'] . ' - ' . $var['local'] . "<br>";
}
...