2015-08-12 2 views
2

У меня есть данные, которые я хочу получить из массива без цикла.PHP: получить данные из массива json без цикла

Я хочу получить «ценность» ссылки «link_click», например, как я могу сделать эту работу?

Я пробовал: но это не работает.

$stats = json_decode($data, false); 
$link_click= $stats->data->actions->action_type->['link_click']->value; 


{ 
    "data": [ 
     { 
     "actions": [ 
      { 
       "action_type": "comment", 
       "value": 2 
      }, 
      { 
       "action_type": "link_click", 
       "value": 636 
      }, 
      { 
       "action_type": "post_like", 
       "value": 2 
      }, 
      { 
       "action_type": "page_engagement", 
       "value": 640 
      }, 
      { 
       "action_type": "post_engagement", 
       "value": 640 
      } 
     ], 
+0

Это звучит очень похоже на домашнее задание. Пожалуйста, напишите, что вы пробовали. Это не сайт генерации кода! – nLee

+0

Поскольку все ваши действия имеют action_type, вам нужно будет перебрать их и добавить условное выражение, чтобы его значение было «link_click». Лучший вопрос: почему в этом случае цикл не является вариантом? –

+1

@nLee, этот код исходит из facebook api. Я попытался получить данные, используя: '$ link_click = $ stats-> data-> actions-> action_type -> [' link_click '] -> value;' – user2413244

ответ

2

Единственный способ сделать это возможным, только если вы знаете индекс action_type:link_click. Если вы знаете индекс, вы можете сделать это. (Ответ на данные, показанные выше).

$stats = json_decode($data, true); 
$link_click= $stats['data']['actions'][1]['value']; 

пример Loop (по запросу):

$stats = json_decode($data, true); 
$value = 0; 
foreach($stats['data']['actions'] as $action) { 
    if ($action->action_type == 'link_click') { 
     $value = $action->value; 
    }  
} 

echo $value; //This is your value 
+0

HI, можете ли вы дать мне пример цикла? Благодарю. – user2413244

+0

Будет работать, ЕСЛИ И ТОЛЬКО ЕСЛИ полученные json данные не меняются. Тщательное доверие к внешним данным без вашей собственной проверки того, какие данные вы ожидаете. –

+0

Это хороший пример. Кто проголосовал отрицательно? –

0

Вы можете использовать что-то вроде JsonPath, чтобы получить значение

Смежные вопросы