2016-07-05 4 views
-3

配列の値にアクセスしようとしています。配列の値にアクセス

Array ([0] => stdClass Object ([action_type] => comment [value] => 19074.125) [1] => stdClass Object ([action_type] => like [value] => 2179.9) [2] => stdClass Object ([action_type] => link_click [value] => 16.633202528886) [3] => stdClass Object ([action_type] => offsite_conversion.fb_pixel_add_to_cart [value] => 451.45857988166) [4] => stdClass Object ([action_type] => offsite_conversion.fb_pixel_complete_registration [value] => 897.60588235294) [5] => stdClass Object ([action_type] => offsite_conversion.fb_pixel_initiate_checkout [value] => 1230.5887096774) [6] => stdClass Object ([action_type] => offsite_conversion.fb_pixel_lead [value] => 372.17804878049) [7] => stdClass Object ([action_type] => offsite_conversion.fb_pixel_purchase [value] => 2384.265625) [8] => stdClass Object ([action_type] => offsite_conversion.fb_pixel_view_content [value] => 63.316597510373) [9] => stdClass Object ([action_type] => post [value] => 8477.3888888889) [10] => stdClass Object ([action_type] => post_like [value] => 193.15569620253) [11] => stdClass Object ([action_type] => unlike [value] => 76296.5) [12] => stdClass Object ([action_type] => page_engagement [value] => 15.168290258449) [13] => stdClass Object ([action_type] => post_engagement [value] => 15.274574574575) [14] => stdClass Object ([action_type] => offsite_conversion [value] => 43.39960182025)) 

私だけoffsite_conversion.fb_pixel_purchaseの値を取得する方法を、[値] => 2384.265625 offsite_conversion.fb_pixel_purchase [ACTION_TYPE] =>の値にアクセスする必要があります?

これらの値はforeachループから得られます。

 $r = $i->cost_per_action_type; 

    foreach($r as $key => $value){ 
     echo $key["action_type"]; 
} 

あなたが見ている配列はprint_r($ x)です。

+1

によると...なぜあなたは、JSONエンコードされた後、デコード?! – deceze

+0

'echo $ key [0] - > action_type;' – feeela

+0

@decezeもし$ rをエコーアウトすれば、配列を文字列変換エラーにします! –

答えて

1

。代わりに矢印演算子->を使用してオブジェクト値を取得してください。

あなたが本当にそれを配列になりたかったしている場合には
foreach($r as $val){ 
    echo $val->action_type; 
} 

、配列ArrayAccessなどのオブジェクトを治療する能力を与えるインターフェース、Countableを実装することを確認、などあなたは、あまりにも、ArrayObjectクラスを拡張することができます。

そして、あなたのcomment

foreach($r as $val){ 
    if ($val->action_type == 'offsite_conversion.fb_pixel_purchase') { 
     echo $val->value; 
    } 
} 
+0

しかし、私は生のPHPを使用して、ちょうどAPIに値を取得するオブジェクトにアクセスし、クラスを使用していません。また、私はこのエラーを取得しています非オブジェクトのプロパティを取得しようとしているので、これの周りの任意のソリューションですか? –

+0

ここをクリックhttps://3v4l.org/6M2I3 APIの応答からエラーが発生している必要があります。それを 'isset'で囲みます。 – Chay22

+0

これに感謝します。私は試してみましょう。 –

2

あなたは配列としてではなくオブジェクトとして結果を使用したい場合は、使用:foreachのは間違っているように、

//will return an associative array 
$x = json_decode($j, true); 

あなたのコードの$ Xには、オブジェクト、配列ではありません。コードで作業して、配列をエンコードしてデコードし、オブジェクトではない配列のように使用しようとする理由を挙げてください。

配列を使用してエンコードを取り除く場合は、オブジェクトを配列に変更する必要があります。 あなたはChay22 @配列として例に何をしたか行うことができます:あなたは単に働いていない配列としてオブジェクトを処理しようとしている

foreach($r as $val){ 
    if ($val[action_type] == 'offsite_conversion.fb_pixel_purchase') { 
     echo $val[value]; 
    } 
} 
+0

ありがとうございます。しかし、すでにそれをした... :) –

関連する問題