2017-05-03 20 views
-1

私はFacebook Graph APIの応答から以下の配列構造を持っています。変数配列データへのアクセスPHP

"data": [ 
    { 
     "actions": [ 
     { 
      "action_type": "comment", 
      "value": "2" 
     }, 
     { 
      "action_type": "offsite_conversion", 
      "value": "1606" 
     } 
     ], 
     "date_start": "2017-04-03", 
     "date_stop": "2017-05-02" 
    }, 
    { 
     "actions": [ 

     { 
      "action_type": "post", 
      "value": "2" 
     }, 
     { 
      "action_type": "post_reaction", 
      "value": "33" 
     }, 
     { 
      "action_type": "page_engagement", 
      "value": "816" 
     }, 
     { 
      "action_type": "post_engagement", 
      "value": "807" 
     }, 
     { 
      "action_type": "offsite_conversion", 
      "value": "1523" 
     } 
     ], 
     "date_start": "2017-04-03", 
     "date_stop": "2017-05-02" 
    }, 
] 

値の数は柔軟で、 "offsite_conversion"から値を取得したいと考えています。通常、私はそのようにします:

data['data'][0]['actions']['1']['value'] 

しかし、['1']が可変であるため、これは機能しません。

+1

そして、何 '「1」を交換する問題があります'変数で? –

+0

詳細を教えてください。 "offsite_conversions"は常に最後であるため、 '1'を計算するので、私はすでに 'actions'の数を数えるアイディアを持っていた – swapfile

+0

offsite_conversionの複数のインスタンスがあります。どちらを取得しようとしていますか?または、それらをすべて手に入れようとしていますか? –

答えて

3

は、ループを使用して、アクションの種類をテストします。

foreach ($data['data'][0]['actions'] as $action) { 
    if ($action['action_type'] == 'offsite_conversion') { 
     $result = $data['value']; 
     break; 
    } 
} 
0

何を達成しようとしますが、あなたは自分の$data配列を反復処理することができます簡単な方法でされているので、完全には明らかではない:

$needed_values = array(); 
foreach ($data['data'] as $item) { 
    foreach ($item['actions'] as $action) { 
     if ($action['action_type'] == 'offsite_conversion') { 
      $needed_values[] = $action['value']; 
     } 
    } 
} 
0

$jsonするFacebook

<?php 
$data = json_decode($json); 
$conversions = 0; 
foreach ($data as $datum) { 
    foreach ($datum['actions'] as $action) { 
    if ($action['action_type'] === 'offsite_convserion') { 
     $conversions += (int)$action['value']; 
     break; 
    } 
    } 
} 
+0

2番目の 'foreach'が' $ datum ['actions'] 'の上にあります –

+0

ありがとうございました@u_mulder – Jaime

1
からのデータを保持しているふり

"offsite_conversions"は常に最後です

$data['data'][0]['actions'][LAST VALUE]['value']もしあなたが探しているものです:

カウントのあなたのアイデアは、動作するはずです:

$actions = $data['data'][0]['actions']; 
$index = count($actions) - 1; 

$value = $actions[$index]['value']; 
+0

ここでは組み込み関数の種類を再作成しています。 – AbraCadaver

+2

私はそれが常に最後に頼ることはありません。順序が固定されていると仮定すると、通常は悪い考えです。 – Jaime

0

Barmarそれがどこにあるかわからないが、あなたが最後のものをしたい場合、それははるかに簡単だ場合は、最良のアプローチがあります。

$result = end($data['data'][0]['actions'])['value']; 
関連する問題