2017-12-16 8 views
2

は、私はこのようになりますorder object受信したときに、私のメールでそれを出力:配列オブジェクトのようにPHPでJSON要素にアクセスするにはどうすればよいですか? <a href="https://docs.woocommerce.com/wc-apidocs/source-class-WC_Checkout.html#935" rel="nofollow noreferrer">this Webhook</a>をトリガーから

配列{ "ID":1154、 "PARENT_ID":0、 "ステータス": "保留します"、 "currency": "EUR"、 "version": "3.2.3"、 "prices_include_tax":true、 "date_created":{"date": "2017-12-15 15:58:42.000000"、 "timezone_type" :1、 "timezone": "+ 00:00"}、 "date_modified":{"date": "2017-12-15 15:58:42.000000"、 "timezone_type":1、 "timezone": "+" 「0」、「discount_total」:「0」、「shipping_total」:「0」、「shipping_tax」:「0」、「cart_tax」:「0」、「合計」: 「last_name」:「Parker」、「company」、「company」、「customer」、「customer」、「customer」、「customer_id」、 : ""、 "address_1": "Baker "、" address_2 ":" 2 "、" city ":" London "、" state ":" "、" postcode ":" 50668 "、" country ":" DE "、" email ":"何か「パーカー」、「会社」:「」、「address_1」:「Baker 」のように、「@ gmail.com」、「phone」:「01627423」}、「shipping」:{「first_name」:「Peter」、「last_name」: "住所": "2"、 "都市": "ロンドン"、 "州": ""、 "郵便番号": "50668"、 "国": "DE"}、 "payment_method": "cod" "、" payment_method_title ":" Bei Abholung "、"トランザクション _id ":" "、" customer_ip_address ":" ... "、" customer_user_agent ":" mozilla/5.0 (macintosh; intel mac os x 10_13_2)applewebkit/537.36(khtml、 geckoのように)クロム/ blabla safari/537.36 "、" created_via ":" checkout "、" customer_note ":" "、" date_completed ":null、" date_paid ": null、 "cart_hash": "be97db19eba58864b9166961ce22a706"、 "number": "1154"、 "meta_data":[{"id":4731、 "key": "_ billing_title"、 "value": "1"}、{"id ":4732、" key ":" _ shipping_title "、" value ":" 1 "}]、" line_items ":{" 18 ":{}}、" tax_lines ":[]、" shipping_lines ":{" 19 " :{}}、 "fee_lines":[]、 "coupon_lines":[]}

このJSONの要素にアクセスする可能性を指摘してください。 $orderオブジェクト?私は$data->date_createdと組み合わせた$data = json_decode($order)を試しましたが、最後のパーをダンプしたときに何も与えませんでしたt。

答えて

3

それは(DATE_CREATEDアクセスするための試みthatsの仮定)開始時Array一部を除いて、JSONです:

あなたがやっていたとしてあなたはjson_decode()を使用しますが、date_createdも配列であるので、あなたもする必要がありますそこからどの項目を選択するかを選択します。

echo $data['billing']['first_name'].' '.$data['billing']['last_name']; 

その構造どのように見ることができ、それをINGの」print_r($data)で:

$data = json_decode($order, true); 

echo $data['date_created']['date']; // 2017-12-15 15:58:42.000000 

は、だから、例えば顧客名をしたい場合。

Array 
(
    [id] => 1154 
    [parent_id] => 0 
    [status] => pending 
    [currency] => EUR 
    [version] => 3.2.3 
    [prices_include_tax] => 1 
    [date_created] => Array 
     (
      [date] => 2017-12-15 15:58:42.000000 
      [timezone_type] => 1 
      [timezone] => +00:00 
     ) 

    [date_modified] => Array 
     (
      [date] => 2017-12-15 15:58:42.000000 
      [timezone_type] => 1 
      [timezone] => +00:00 
     ) 

    [discount_total] => 0 
    [discount_tax] => 0 
    [shipping_total] => 0 
    [shipping_tax] => 0 
    [cart_tax] => 0 
    [total] => 6.50 
    [total_tax] => 0 
    [customer_id] => 0 
    [order_key] => wc_order_5a33f1321ba43 
    [billing] => Array 
     (
      [first_name] => Peter 
      [last_name] => Parker 
      [company] => 
      [address_1] => Baker Str. 
      [address_2] => 2 
      [city] => London 
      [state] => 
      [postcode] => 50668 
      [country] => DE 
      [email] => [email protected] 
      [phone] => 01627423 
     ) 

    [shipping] => Array 
     (
      [first_name] => Peter 
      [last_name] => Parker 
      [company] => 
      [address_1] => Baker Str. 
      [address_2] => 2 
      [city] => London 
      [state] => 
      [postcode] => 50668 
      [country] => DE 
     ) 

    [payment_method] => cod 
    [payment_method_title] => Bei Abholung 
    [transaction _id] => 
    [customer_ip_address] => ... 
    [customer_user_agent] => mozilla/5.0 (macintosh; intel mac os x 10_13_2) applewebkit/537.36 (khtml, like gecko) chrome/blabla safari/537.36 
    [created_via] => checkout 
    [customer_note] => 
    [date_completed] => 
    [date_paid] => 
    [cart_hash] => be97db19eba58864b9166961ce22a706 
    [number] => 1154 
    [meta_data] => Array 
     (
      [0] => Array 
       (
        [id] => 4731 
        [key] => _billing_title 
        [value] => 1 
       ) 

      [1] => Array 
       (
        [id] => 4732 
        [key] => _shipping_title 
        [value] => 1 
       ) 

     ) 

    [line_items] => Array 
     (
      [18] => Array 
       (
       ) 

     ) 

    [tax_lines] => Array 
     (
     ) 

    [shipping_lines] => Array 
     (
      [19] => Array 
       (
       ) 

     ) 

    [fee_lines] => Array 
     (
     ) 

    [coupon_lines] => Array 
     (
     ) 

) 

あなたがあなたの電子メールを生成します再帰関数で配列を横切ることができるシンプル出力をしたい場合。https://3v4l.org/l9BS4

<h2>Order Details</h2> 
<b>Id</b>: 1154</br> 
<b>Parent Id</b>: 0</br> 
<b>Status</b>: pending</br> 
<b>Currency</b>: EUR</br> 
<b>Version</b>: 3.2.3</br> 
<b>Prices Include Tax</b>: 1</br> 

<h3>Date Created</h3> 
<b>Date</b>: 2017-12-15 15:58:42.000000</br> 
<b>Timezone Type</b>: 1</br> 
<b>Timezone</b>: +00:00</br> 

<h3>Date Modified</h3> 
<b>Date</b>: 2017-12-15 15:58:42.000000</br> 
<b>Timezone Type</b>: 1</br> 
<b>Timezone</b>: +00:00</br> 
<b>Discount Total</b>: 0</br> 
<b>Discount Tax</b>: 0</br> 
<b>Shipping Total</b>: 0</br> 
<b>Shipping Tax</b>: 0</br> 
<b>Cart Tax</b>: 0</br> 
<b>Total</b>: 6.50</br> 
<b>Total Tax</b>: 0</br> 
<b>Customer Id</b>: 0</br> 
<b>Order Key</b>: wc_order_5a33f1321ba43</br> 

<h3>Billing</h3> 
<b>First Name</b>: Peter</br> 
<b>Last Name</b>: Parker</br> 
<b>Company</b>: </br> 
<b>Address 1</b>: Baker Str.</br> 
<b>Address 2</b>: 2</br> 
<b>City</b>: London</br> 
<b>State</b>: </br> 
<b>Postcode</b>: 50668</br> 
<b>Country</b>: DE</br> 
<b>Email</b>: [email protected]</br> 
<b>Phone</b>: 01627423</br> 

<h3>Shipping</h3> 
<b>First Name</b>: Peter</br> 
<b>Last Name</b>: Parker</br> 
<b>Company</b>: </br> 
<b>Address 1</b>: Baker Str.</br> 
<b>Address 2</b>: 2</br> 
<b>City</b>: London</br> 
<b>State</b>: </br> 
<b>Postcode</b>: 50668</br> 
<b>Country</b>: DE</br> 
<b>Payment Method</b>: cod</br> 
<b>Payment Method Title</b>: Bei Abholung</br> 
<b>Transaction Id</b>: </br> 
<b>Customer Ip Address</b>: ...</br> 
<b>Customer User Agent</b>: mozilla/5.0 (macintosh; intel mac os x 10_13_2) applewebkit/537.36 (khtml, like gecko) chrome/blabla safari/537.36</br> 
<b>Created Via</b>: checkout</br> 
<b>Customer Note</b>: </br> 
<b>Date Completed</b>: </br> 
<b>Date Paid</b>: </br> 
<b>Cart Hash</b>: be97db19eba58864b9166961ce22a706</br> 
<b>Number</b>: 1154</br> 

<h3>Meta Data</h3> 

<h3>0</h3> 
<b>Id</b>: 4731</br> 
<b>Key</b>: _billing_title</br> 
<b>Value</b>: 1</br> 

<h3>1</h3> 
<b>Id</b>: 4732</br> 
<b>Key</b>: _shipping_title</br> 
<b>Value</b>: 1</br> 

<h3>Line Items</h3> 

<h3>18</h3> 

<h3>Tax Lines</h3> 

<h3>Shipping Lines</h3> 

<h3>19</h3> 

<h3>Fee Lines</h3> 

<h3>Coupon Lines</h3> 
+0

ありがとう! 'Array'は出力の一部であり、私の試行の一部ではありません。メールの本文として '$ order'を追加しました。私はそれがJSONに正しくアクセスできないという問題の一部だと考えています! – Pete

+1

'$ order'の文字列の中に、もし' json_decode($ order、true) 'が返されるべきでないならば配列の場合は 'null'を返します。あなたが何らかの理由でそれを取り除くことができないなら、あなたはいつもその場所があるかどうかをチェックして回避することができます。もしそれが取り除かれていれば、https://3v4l.org/Hule3 –

1

あなたは

$data = json_decode($order); 

を使用する場合、それはあなただけに必要な連想配列の中にこのオブジェクトを変換するには、オブジェクトを作成します。これは以下のような出力を意志

echo '<h2>Order Details</h2>'.PHP_EOL; 
echo order_details(json_decode($json, true)); 

function order_details($items, $str = null) { 
    foreach ($items as $key => $item) { 
     if (is_array($item)) { 
      $str .= PHP_EOL.'<h3>'.ucwords(str_replace('_', ' ', $key)).'</h3>'.PHP_EOL; 
      $str .= order_details($item, $str); 
     } else { 
      $str .= '<b>'.ucwords(str_replace('_', ' ', $key)).'</b>: '.$item.'</br>'.PHP_EOL; 
     } 
    } 
    return $str; 
} 

引数を渡す

$data = json_decode($order, true); 
関連する問題