Массив PHP API MyEmma и цикл For или While

Я работаю с API MyEmma. MyEmma-это облачное программное обеспечение для маркетинга электронной почты. Хотя если вы не слышали о нем или работали с ним, вы все еще можете предложить некоторую помощь с моим вопросом, поскольку он имеет дело в первую очередь с массивом данных и извлечением значений из цикла for или While PHP.

Таким образом, у меня есть следующий код, который выведет переменную $head в конце с помощью print_r ($head), как вы можете видеть в нижней части кода:

    <?php
// Authentication Variables
$account_id = "1788878";
$public_api_key = "ccXXXXXXXXXXXXX3";
$private_api_key = "cXXXXXXXXXXXXX5";

// Set URL
$url =   "https://api.e2ma.net/" . $account_id . "/members";  

// Open connection
$ch = curl_init();

// Make the curl call
curl_setopt($ch, CURLOPT_USERPWD, $public_api_key . ":" . $private_api_key);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$head = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);



// check for errors
if($http_code > 200) {
    print "Error getting member:rn";
    print_r($head);
} else {
    print "Member information:rn";
    print_r($head);
}
?>

Следующий вывод является примером, сгенерированным print_r ($head):

 [ { "status": "active", "confirmed_opt_in": null, "account_id": 1788878, "fields": { }, "member_id": 258158888, "last_modified_at": null, "member_status_id": "a", "plaintext_preferred": false, "email_error": null, "member_since": "@D:2014-01-30T11:09:31", "bounce_count": 0, "deleted_at": null, "email": "david@something.com" }, { "status": "error", "confirmed_opt_in": null, "account_id": 1788878, "fields": { }, "member_id": 258158889, "last_modified_at": "@D:2014-06-09T09:00:19", "member_status_id": "e", "plaintext_preferred": false, "email_error": null, "member_since": "@D:2014-01-30T11:10:15", "bounce_count": 1, "deleted_at": null, "email": "test@something.com" } ]

В приведенном выше примере вывода это всего лишь две сущности из сотен, которые фактически выводит скрипт.

То, что я хотел бы сделать, это использовать цикл «for» или «while» в PHP или что-то подобное, чтобы захватить каждое значение «member_id» и значение «email», и это будет использоваться в инструкции SQL INSERT для создания записи базы данных для каждого набора значений member_id и email.

Мне нужна помощь в синтаксисе создания цикла для извлечения обоих значений для каждой записи, которую я создам в таблице базы данных. Может ли кто-то показать мне, как правильно написать код для этого?

1 ответ

  1. Вы получаете правильный json в качестве возврата. Таким образом, вы можете декодировать его и использовать его в качестве массива.

    <?php
    
    $head = '[ { "status": "active", "confirmed_opt_in": null, "account_id": 1788878, "fields": { }, "member_id": 258158888, "last_modified_at": null, "member_status_id": "a", "plaintext_preferred": false, "email_error": null, "member_since": "@D:2014-01-30T11:09:31", "bounce_count": 0, "deleted_at": null, "email": "david@something.com" }, { "status": "error", "confirmed_opt_in": null, "account_id": 1788878, "fields": { }, "member_id": 258158889, "last_modified_at": "@D:2014-06-09T09:00:19", "member_status_id": "e", "plaintext_preferred": false, "email_error": null, "member_since": "@D:2014-01-30T11:10:15", "bounce_count": 1, "deleted_at": null, "email": "test@something.com" } ]';
    
    $data = json_decode($head,true); // the second param will cast it as array, default is obejct. See the linked docs of json_decode!
    foreach($data as $item) {
        $id=$item['member_id'];
        $email=$item['email'];
        echo "ID: $id EMAIL: $email<br/>";
        // put your code here to write into DB or whatever you wanna do!
    }
    
    ?>
    

    Альтернатива: использовать в качестве объектов:

    <?php
    $data = json_decode($head); // defaults to object if second param isn't set.
    foreach($data as $item) {
       $id=$item->member_id;
       $email=$item->email;
       echo "ID: $id EMAIL: $email<br/>";
       // put your code here to write into DB or whatever you wanna do!
    }
    ?>