2015-08-12 2 views
0

У меня есть структура JSON ниже, что я вставляю в свой PHP-скрипт как запрос $ _POST. Ключи для имен кампаний и имен групп динамически генерируются, поэтому мне нужно извлечь эти ключи, чтобы затем я мог группировать каждую кампанию с ее именем группы и копией объявления в отдельные массивы.Извлечение динамически сгенерированных ключей и значений JSON

Я видел несколько сообщений здесь, которые очень похожи, но ни одно из этих решений не работает до сих пор. Я чувствую, что я слишком усложняю это.

{ 
    "First Campaign Name": { 
     "First Group Name": { 
      "textads": [ 
       [ 
        "{Headline text}", 
        "First line text", 
        "Second line text", 
        "Display URL" 
       ], 
       [ 
        "{Headline text}", 
        "First line text", 
        "Second line text", 
        "Display URL" 
       ] 
      ] 
     }, 
     "Second Group Name": { 
      "textads": [ 
       [ 
        "{Headline text}", 
        "First line text", 
        "Second line text", 
        "Display URL" 
       ], 
       [ 
        "{Headline text}", 
        "First line text", 
        "Second line text", 
        "Display URL" 
       ] 
      ] 
     } 
    }, 
    "Second Campaign Name": { 
     "First Group Name": { 
      "textads": [ 
       [ 
        "{Headline text}", 
        "First line text", 
        "Second line text", 
        "Display URL" 
       ], 
       [ 
        "{Headline text}", 
        "First line text", 
        "Second line text", 
        "Display URL" 
       ] 
      ] 
     }, 
     "Second Group Name": { 
      "textads": [ 
       [ 
        "{Headline text}", 
        "First line text", 
        "Second line text", 
        "Display URL" 
       ], 
       [ 
        "{Headline text}", 
        "First line text", 
        "Second line text", 
        "Display URL" 
       ] 
      ] 
     } 
    } 
} 

Я пробовал несколько foreach и вложенные петли foreach, пытаясь получить доступ к ключам и значениям без везения. Мои последние попытки:

foreach($jsonString as $campaign) { 
    foreach($campaign as $k => $v){ 
     $postData .= "Key: " . $k . "\r\n"; 
     $postData .= "Val: " . $v . "\r\n"; 
    } 
} 

Где $ postData уже определено и затем сохраняется в файл для вывода. Я также попытался следующее:

foreach ($_POST as $key => $value) { 
    foreach($value as $item){ 
     foreach($item as $k => $v){ 
      $postData .= "Key: " . $k . "\r\n"; 
      $postData .= "Val: " . $v . "\r\n"; 
     } 
    } 
} 
+0

Это то, что вам нужно. петли вложенные 3 глубины. как это не работает? –

+0

Возможно, это только я, но мне сложно понять, какова будет структура, для которой вы собираетесь. Не могли бы вы привести пример вывода, который вы пытаетесь получить? –

+0

Итак, выяснилось, что проблема не была моей логикой, а скорее фактическим JSON, который получил сценарий, который я не могу опубликовать здесь, потому что он содержит конфиденциальную информацию. Данные JSON, которые передаются, содержат одинарные кавычки, которые не экранированы должным образом. Спасибо всем за помощь! – Jonathan

ответ

2

Вам нужно будет преобразовать JSON в массив PHP, прежде чем вы можете использовать его с Еогеасп.

$ phparray = json_decode ($ jsonString);

http://php.net/manual/en/function.json-decode.php

+0

'json_decode ($ jsonString);' будет возвращать объект. Вам нужно будет добавить дополнительный флаг для получения массива-члена: 'json_decode ($ jsonString, true)' – HPierce

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