2016-09-22 4 views
2

Использование вызова api Я извлекаю ряд объектов данных, хранящихся в массиве, однако я хочу только распечатать некоторые из возвращаемых объектов.Доступ к явным объектам в массиве

Все данные хранятся в переменной $mail. Я ищу, чтобы получить доступ доставлен к примеру было бы что-то вроде $mail->delivered

Это возвращается выборочные данные -

""" 
[\n 
    {\n 
    "count_purchased": 0,\n 
    "delivered": 1,\n 
    "clicked_unique": 0,\n 
    "shared": 0,\n 
    "mailings": 1,\n 
    "year": 2016,\n 
    "month": 9,\n 
    "opened": 1,\n 
    "opted_out": 0,\n 
    "sent": 1,\n 
    "signed_up": 0,\n 
    },\n 
    {\n 
    "count_purchased": 0,\n 
    "delivered": 56,\n 
    "clicked_unique": 0,\n 
    "shared": 0,\n 
    "mailings": 31,\n 
    "year": 2016,\n 
    "month": 9,\n 
    "opened": 1,\n 
    "opted_out": 0,\n 
    "sent": 102,\n 
    "signed_up": 0,\n 
    }\n 
] 
+0

это JSON ответ? –

ответ

2

Повышение answer of M. I. с немного объяснений:

Поскольку вы получаете JSON строку в качестве ответа, вы должны преобразовать его. Удобно, PHP имеет функцию для этого, прежде всего json_decode.

Так что если ваш ответ сохранен в $mail, то все, что нам нужно сделать, это преобразовать его в associative array или объект класса \stdClass.

Ваш ответ возвращает несколько объектов, так что нам нужно сделать некоторую работу, прежде чем мы сможем получить доступ к этому пути, вы хотите, чтобы:

// Given the content of mail is your given json string 

// The second parameter allows us to use each entry of $mailData as \stdClass. 
// If you want to use an assiocative array instead, you can put in true for the second parameter. 
$mailData = json_decode($mail, false); // false can also be omitted in this case. 
echo $mailData[0]->sent; // 1 
echo $mailData[1]->sent; // 102 

// Now you are able to do fancy stuff with the data, for example loop over it. 
foreach($mailData as $singleMailData) { 
    // Do whatever you want with each entry. In my example I just print out the data. 
    var_dump($singleMailData); 
} 
+0

Отлично спасибо за объяснение, также хорошо понятое сейчас для будущего использования! – SamXronn

1

вы получаете JSON в качестве ответа. Использование:

json_decode($jsonString); // to get an `JSON` object or 
json_decode($jsonString, true); // to get an associative array. 
Смежные вопросы