Foreach的参数无效()为什么?

时间:2015-04-27 15:41:10

标签: php json foreach

<?php
require "../core.php";
require "../Curl.php";

$ch = new Curl();

// echo $functions->ShopifyApi()."/admin/orders.json";
$orders = json_decode($ch->get($functions->ShopifyApi()."/admin/orders.json"), true);
$placements = $orders->orders;

echo $placements;

这是给出问题的一行:foreach($ placements as $ order){

foreach ($order->line_items as $item) {




foreach ($order->note_attributes as $attributes) {
    $req      = array();

    $customer = array();

    $req[$attributes->name] = $attributes->value;

并且代码继续....为什么在执行脚本时我收到错误警告:在第13行的/home/xxxxxxxx/public_html/xxx/xxxxx/script.php中为foreach()提供的参数无效

样本JSON不是来自:$functions->ShopifyApi()."/admin/orders.json

 {
  "orders": [
    {
      "buyer_accepts_marketing": false,
      "cancel_reason": null,
      "cancelled_at": null,
      "cart_token": "68778783ad298f1c80c3bafcddeea02f",
      "checkout_token": null,
      "closed_at": null,
      "confirmed": false,
      "created_at": "2008-01-10T11:00:00-05:00",
      "currency": "USD",
      "device_id": null,
      "email": "bob.norman@hostmail.com",
      "financial_status": "authorized",
      "fulfillment_status": null,
      "gateway": "authorize_net",
      "id": 450789469,
      "landing_site": "http:\/\/www.example.com?source=abc",
      "location_id": null,
      "name": "#1001",
      "note": null,
      "number": 1,
      "processed_at": "2008-01-10T11:00:00-05:00",
      "reference": "fhwdgads",
      "referring_site": "http:\/\/www.otherexample.com",
      "source_identifier": "fhwdgads",
      "source_url": null,
      "subtotal_price": "398.00",
      "taxes_included": false,
      "test": false,
      "token": "b1946ac92492d2347c6235b4d2611184",
      "total_discounts": "0.00",
      "total_line_items_price": "398.00",
      "total_price": "409.94",
      "total_price_usd": "409.94",
      "total_tax": "11.94",
      "total_weight": 0,
      "updated_at": "2008-01-10T11:00:00-05:00",
      "user_id": null,
      "browser_ip": null,
      "landing_site_ref": "abc",
      "order_number": 1001,
      "discount_codes": [
        {
          "code": "TENOFF",
          "amount": "10.00",
          "type": "percentage"
        }
      ],
      "note_attributes": [
        {
          "name": "custom engraving",
          "value": "Happy Birthday"
        },
        {
          "name": "colour",
          "value": "green"
        }
      ],
      "processing_method": "direct",
      "source": "browser",
      "checkout_id": 450789469,
      "source_name": "web",
      "tax_lines": [
        {
          "price": "11.94",
          "rate": 0.06,
          "title": "State Tax"
        }
      ],
      "tags": "",
      "line_items": [
        {
          "fulfillment_service": "manual",
          "fulfillment_status": null,
          "gift_card": false,
          "grams": 200,
          "id": 466157049,
          "price": "199.00",
          "product_id": 632910392,
          "quantity": 1,
          "requires_shipping": true,
          "sku": "IPOD2008GREEN",
          "taxable": true,
          "title": "IPod Nano - 8gb",
          "variant_id": 39072856,
          "variant_title": "green",
          "vendor": null,
          "name": "IPod Nano - 8gb - green",
          "variant_inventory_management": "shopify",
          "properties": [
            {
              "name": "Custom Engraving Front",
              "value": "Happy Birthday"
            },
            {
              "name": "Custom Engraving Back",
              "value": "Merry Christmas"
            }
          ],
          "product_exists": true,
          "fulfillable_quantity": 1,
          "total_discount": "0.00",
          "tax_lines": [
          ]
        },
        {
          "fulfillment_service": "manual",
          "fulfillment_status": null,
          "gift_card": false,
          "grams": 200,
          "id": 518995019,
          "price": "199.00",
          "product_id": 632910392,
          "quantity": 1,
          "requires_shipping": true,
          "sku": "IPOD2008RED",
          "taxable": true,
          "title": "IPod Nano - 8gb",
          "variant_id": 49148385,
          "variant_title": "red",
          "vendor": null,
          "name": "IPod Nano - 8gb - red",
          "variant_inventory_management": "shopify",
          "properties": [
          ],
          "product_exists": true,
          "fulfillable_quantity": 1,
          "total_discount": "0.00",
          "tax_lines": [
          ]
        },
        {
          "fulfillment_service": "manual",
          "fulfillment_status": null,
          "gift_card": false,
          "grams": 200,
          "id": 703073504,
          "price": "199.00",
          "product_id": 632910392,
          "quantity": 1,
          "requires_shipping": true,
          "sku": "IPOD2008BLACK",
          "taxable": true,
          "title": "IPod Nano - 8gb",
          "variant_id": 457924702,
          "variant_title": "black",
          "vendor": null,
          "name": "IPod Nano - 8gb - black",
          "variant_inventory_management": "shopify",
          "properties": [
          ],
          "product_exists": true,
          "fulfillable_quantity": 1,
          "total_discount": "0.00",
          "tax_lines": [
          ]
        }
      ],
      "shipping_lines": [
        {
          "code": "Free Shipping",
          "price": "0.00",
          "source": "shopify",
          "title": "Free Shipping",
          "tax_lines": [
          ]
        }
      ],
      "billing_address": {
        "address1": "123 Amoebobacterieae St",
        "address2": "",
        "city": "Ottawa",
        "company": "",
        "country": "Canada",
        "first_name": "Bob",
        "last_name": "Bobsen",
        "latitude": 45.41634,
        "longitude": -75.6868,
        "phone": "(555)555-5555",
        "province": "Ontario",
        "zip": "K2P0V6",
        "name": "Bob Bobsen",
        "country_code": "CA",
        "province_code": "ON"
      },
      "shipping_address": {
        "address1": "123 Amoebobacterieae St",
        "address2": "",
        "city": "Ottawa",
        "company": "",
        "country": "Canada",
        "first_name": "Bob",
        "last_name": "Bobsen",
        "latitude": 45.41634,
        "longitude": -75.6868,
        "phone": "(555)555-5555",
        "province": "Ontario",
        "zip": "K2P0V6",
        "name": "Bob Bobsen",
        "country_code": "CA",
        "province_code": "ON"
      },
      "fulfillments": [
        {
          "created_at": "2015-03-28T13:29:45-04:00",
          "id": 255858046,
          "order_id": 450789469,
          "service": "manual",
          "status": "failure",
          "tracking_company": null,
          "updated_at": "2015-03-28T13:29:45-04:00",
          "tracking_number": "1Z2345",
          "tracking_numbers": [
            "1Z2345"
          ],
          "tracking_url": "http:\/\/wwwapps.ups.com\/etracking\/tracking.cgi?InquiryNumber1=1Z2345&TypeOfInquiryNumber=T&AcceptUPSLicenseAgreement=yes&submit=Track",
          "tracking_urls": [
            "http:\/\/wwwapps.ups.com\/etracking\/tracking.cgi?InquiryNumber1=1Z2345&TypeOfInquiryNumber=T&AcceptUPSLicenseAgreement=yes&submit=Track"
          ],
          "receipt": {
            "testcase": true,
            "authorization": "123456"
          },
          "line_items": [
            {
              "fulfillment_service": "manual",
              "fulfillment_status": null,
              "gift_card": false,
              "grams": 200,
              "id": 466157049,
              "price": "199.00",
              "product_id": 632910392,
              "quantity": 1,
              "requires_shipping": true,
              "sku": "IPOD2008GREEN",
              "taxable": true,
              "title": "IPod Nano - 8gb",
              "variant_id": 39072856,
              "variant_title": "green",
              "vendor": null,
              "name": "IPod Nano - 8gb - green",
              "variant_inventory_management": "shopify",
              "properties": [
                {
                  "name": "Custom Engraving Front",
                  "value": "Happy Birthday"
                },
                {
                  "name": "Custom Engraving Back",
                  "value": "Merry Christmas"
                }
              ],
              "product_exists": true,
              "fulfillable_quantity": 1,
              "total_discount": "0.00",
              "tax_lines": [
              ]
            }
          ]
        }
      ],
      "client_details": {
        "accept_language": null,
        "browser_height": null,
        "browser_ip": "0.0.0.0",
        "browser_width": null,
        "session_hash": null,
        "user_agent": null
      },
      "refunds": [
        {
          "created_at": "2015-03-28T13:29:45-04:00",
          "id": 509562969,
          "note": "it broke during shipping",
          "order_id": 450789469,
          "restock": true,
          "user_id": 799407056,
          "refund_line_items": [
            {
              "id": 104689539,
              "line_item_id": 703073504,
              "quantity": 1,
              "line_item": {
                "fulfillment_service": "manual",
                "fulfillment_status": null,
                "gift_card": false,
                "grams": 200,
                "id": 703073504,
                "price": "199.00",
                "product_id": 632910392,
                "quantity": 1,
                "requires_shipping": true,
                "sku": "IPOD2008BLACK",
                "taxable": true,
                "title": "IPod Nano - 8gb",
                "variant_id": 457924702,
                "variant_title": "black",
                "vendor": null,
                "name": "IPod Nano - 8gb - black",
                "variant_inventory_management": "shopify",
                "properties": [
                ],
                "product_exists": true,
                "fulfillable_quantity": 1,
                "total_discount": "0.00",
                "tax_lines": [
                ]
              }
            },
            {
              "id": 709875399,
              "line_item_id": 466157049,
              "quantity": 1,
              "line_item": {
                "fulfillment_service": "manual",
                "fulfillment_status": null,
                "gift_card": false,
                "grams": 200,
                "id": 466157049,
                "price": "199.00",
                "product_id": 632910392,
                "quantity": 1,
                "requires_shipping": true,
                "sku": "IPOD2008GREEN",
                "taxable": true,
                "title": "IPod Nano - 8gb",
                "variant_id": 39072856,
                "variant_title": "green",
                "vendor": null,
                "name": "IPod Nano - 8gb - green",
                "variant_inventory_management": "shopify",
                "properties": [
                  {
                    "name": "Custom Engraving Front",
                    "value": "Happy Birthday"
                  },
                  {
                    "name": "Custom Engraving Back",
                    "value": "Merry Christmas"
                  }
                ],
                "product_exists": true,
                "fulfillable_quantity": 1,
                "total_discount": "0.00",
                "tax_lines": [
                ]
              }
            }
          ],
          "transactions": [
            {
              "amount": "209.00",
              "authorization": "authorization-key",
              "created_at": "2005-08-05T12:59:12-04:00",
              "currency": "USD",
              "gateway": "bogus",
              "id": 179259969,
              "kind": "refund",
              "location_id": null,
              "message": null,
              "order_id": 450789469,
              "parent_id": null,
              "status": "success",
              "test": false,
              "user_id": null,
              "device_id": null,
              "receipt": {},
              "error_code": null,
              "source_name": "web"
            }
          ]
        }
      ],
      "payment_details": {
        "avs_result_code": null,
        "credit_card_bin": null,
        "cvv_result_code": null,
        "credit_card_number": "•••• •••• •••• 4242",
        "credit_card_company": "Visa"
      },
      "customer": {
        "accepts_marketing": false,
        "created_at": "2015-03-28T13:29:45-04:00",
        "email": "bob.norman@hostmail.com",
        "first_name": "Bob",
        "id": 207119551,
        "last_name": "Norman",
        "last_order_id": 450789469,
        "multipass_identifier": null,
        "note": null,
        "orders_count": 1,
        "state": "disabled",
        "total_spent": "41.94",
        "updated_at": "2015-03-28T13:29:45-04:00",
        "verified_email": true,
        "tags": "",
        "last_order_name": "#1001",
        "default_address": {
          "address1": "Chestnut Street 92",
          "address2": "",
          "city": "Louisville",
          "company": null,
          "country": "United States",
          "first_name": null,
          "id": 207119551,
          "last_name": null,
          "phone": "555-625-1199",
          "province": "Kentucky",
          "zip": "40202",
          "name": "",
          "province_code": "KY",
          "country_code": "US",
          "country_name": "United States",
          "default": true
        }
      }
    }
  ]
}

1 个答案:

答案 0 :(得分:0)

这是一个thread,其中包含一些示例,良好做法以及针对“foreach”问题的修复方法。

    $notes = $order->note_attributes;
    // validations on $notes ie. empty, array etc..

    foreach ((array) $notes as $note) {
       // validations on $note
       // do stuffs...
    }

希望这有帮助。