Получить данные из массива json - неопределенная ошибка индекса

0

Ниже приведен ответ json, и у меня проблемы с получением данных shipping_address.

{
    "orders": [{
        "created_at": "2015-01-04T02:20:03+01:00",
        "financial_status": "paid",
        "id": 384536708,
        "total_price": "45.00",
        "line_items": [{
            "fulfillment_service": "manual",
            "fulfillment_status": null,
            "gift_card": false,
            "grams": 0,
            "price": "45.00",
            "quantity": 1,
            "requires_shipping": true,
            "taxable": true,
            "title": "test",
            "vendor": "test",
            "name": "test",
            "properties": [],
            "product_exists": true,
            "fulfillable_quantity": 1,
            "tax_lines": []
        }],
        "shipping_address": {
            "address1": "Street 20",
            "address2": "",
            "city": "City",
            "company": "",
            "country": "USA",
            "first_name": "Name",
            "last_name": "Surname",
            "latitude": 45.000000,
            "longitude": 10.000000,
            "phone": "",
            "province": "",
            "zip": "12345",
            "name": "Name Surname",
            "country_code": "US",
            "province_code": null
        }
    }, [...]

Я могу получить заказы с помощью этого кода:

$content = file_get_contents($url);
$json = json_decode($content, true);
foreach($json['orders'] as $order){
    echo "<td>".$order['id']."</td>";
}

Но когда я пытаюсь получить данные shipping_address следующим образом:

foreach ($json['shipping_address'] as $sa) {
    echo "<td>".$sa['name']."</td>";
}

Затем я получаю: Примечание: Неопределенный индекс: shipping_address и Warning: Недействительный аргумент, предоставленный foreach()

Я неправильно настроен на массив?

  • 0
    отладка с помощью print_r($json); после $json = json_decode($content, true); этот код строки.
Теги:

3 ответа

0
Лучший ответ

Должен быть -

foreach ($json['orders']['shipping_address'] as $sa) {

Попробуй это -

foreach($json['orders'] as $order){
    echo "<td>".$order['id']."</td>";
    echo "<td>".$order['shipping_address']['name']."</td>";
}
  • 0
    та же ошибка, что и в предыдущем ответе. могу ли я как-то вызвать их обоих из одного цикла foreach?
  • 0
    Обновил ответ. При этом вы можете получить доступ к ним в обоих циклах.
0

Попробуй это:

$content = file_get_contents($url);
$json    = json_decode($content, true);

foreach($json as $orders){
    foreach($orders as $odarr){
        foreach($odarr['shipping_address'] as $shipadd){
            echo $shipadd['address1'];
        }
    }
}
0
foreach ($json['orders']['shipping_address'] as $sa) {

    echo "<td>".$sa['name']."</td>";
}
  • 0
    Я получаю ту же ошибку при добавлении этого также

Ещё вопросы

Сообщество Overcoder
Наверх
Меню