Примечание: неопределенное смещение: 0 foreach - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь получить ответ через API и сохранить его в БД

print_r($result_arr);
//is printing all the data and my next line is 
foreach ($result_arr[0]["http_response_body"]["Items"] as $key => $value) {

это дает ошибку

Примечание: неопределенное смещение: 0 в строке C: \ xampp \ htdocs \ api \ index.php 33 Предупреждение: в foreach () указан неверный аргумент в C: \ xampp \ htdocs \ api \ index.php в строке 33

API-ответ, который я получаю

Array ( [Items] => Array ( [0] => Array ( [SKU] => 123 [Quantity] => 13 
[ProductName] => tet prod [Description] => blah blah ... 

Ответы [ 3 ]

0 голосов
/ 29 июня 2018

Вот что вы получили:

print_r($result_arr);

Это даст вам этот массив:

Array ( 
    [Items] => 
        Array ( 
            [0] => Array ( 
                [SKU] => 123 
                [Quantity] => 13 
                [ProductName] => tet prod 
                [Description] => blah blah ... 

И вот что вы делаете:

foreach ($result_arr[0]["http_response_body"]["Items"] as $key => $value) {

Вы получаете Notice: Undefined offset: 0 только потому, что, как видите, в вашем массиве нет $result_arr[0].

Так что просто сделайте:

foreach ($result_arr["Items"] as $key => $value) {

И это должно работать!

Надеюсь, это поможет

0 голосов
/ 29 июня 2018

Кажется, что ваш массив построен так:

$result_arr["Items"][] = array( "sku"=>123, "qty" => 44, "ProductName" => "tet prod", "Description" => "blahh" );

вы можете перебирать этот массив как:

foreach ($result_arr["Items"] as $key => $value) {
    echo "key: " . $key . ", sku:" . $value["sku"] . ", prod:" . $value[ "ProductName" ] . "<br />";
}

foreach ($result_arr["Items"] as $items ) {
    foreach( $items as $key => $value ) {
        echo $key . "/" . $value . "<br />";
    }
}
0 голосов
/ 29 июня 2018

В ответе API вы получаете многомерный массив с тремя вложенными уровнями.

Правильный способ доступа -

foreach($result_arr as $key=>$val)
{
   print_r($val); // this line for reference prints [0] array elements
   foreach($val as $key1=>$val1)
   {
        echo $val1['SKU']; // prints 123
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...