2016-11-14 177 views
1

我想解析JSON字符串,以便我可以将它保存到如下所示的二维数组中。我唯一的解决方案是由3或4个foreach循环组成,我不认为这很好。解析json字符串到数组

{ 
    "root": { 
    "row": [ 
     { 
     "Status": "Enabled", 
     "Keyword": "Toaletna voda", 
     "Campaign": "Lešenari", 
     "Adgroup": "Lešenaris", 
     "BidStrategyType": "InheritFromParent", 
     "Bid": "0.05", 
     "Matchtype": "Broad", 
     "Clicks": "0", 
     "Impr.": "0", 
     "Conv.": "0" 
     }, 
     { 
     "Status": "Enabled", 
     "Keyword": "lyžička", 
     "Campaign": "Lešenari", 
     "Adgroup": "Lešenaris", 
     "BidStrategyType": "InheritFromParent", 
     "Bid": "0.05", 
     "Matchtype": "Broad", 
     "Clicks": "0", 
     "Impr.": "0", 
     "Conv.": "0" 
     }, 
     { 
     "Status": "Search total", 
     "Keyword": "-", 
     "Campaign": "-", 
     "Adgroup": "-", 
     "BidStrategyType": "-", 
     "Bid": "-", 
     "Matchtype": "-", 
     "Clicks": "0", 
     "Impr.": "0", 
     "Conv.": "0" 
     }, 
     { 
     "Status": "Content total", 
     "Keyword": "-", 
     "Campaign": "-", 
     "Adgroup": "-", 
     "BidStrategyType": "-", 
     "Bid": "-", 
     "Matchtype": "-", 
     "Clicks": "0", 
     "Impr.": "0", 
     "Conv.": "0" 
     }, 
     { 
     "Status": "Deleted items total", 
     "Keyword": "-", 
     "Campaign": "-", 
     "Adgroup": "-", 
     "BidStrategyType": "-", 
     "Bid": "-", 
     "Matchtype": "-", 
     "Clicks": "0", 
     "Impr.": "0", 
     "Conv.": "0" 
     }, 
     { 
     "Status": "Overall total", 
     "Keyword": "-", 
     "Campaign": "-", 
     "Adgroup": "-", 
     "BidStrategyType": "-", 
     "Bid": "-", 
     "Matchtype": "-", 
     "Clicks": "0", 
     "Impr.": "0", 
     "Conv.": "0" 
     } 
    ] 
    } 
} 

它应该返回像这样

Keyword=>Toaletna voda 
Keyword=>lyžička 
Campaign=>Lešenari 
Campaign=>Lešenari 
Adgroup=>Lešenaris 
Adgroup=>Lešenaris 
Bid=>0.05 
Bid=>0.05 
Clicks=>0 
Clicks=>0 
Impr.=>0 
Impr.=>0 
Conv.=>0 
Conv.=>0 

应该做同样的事情,因为这功能,它需要名称的数组,发现被追加到它在XML文件中的值

public function LoadXmlReport($adSystemColumns = array()) 
    { 
     require "config.php"; 

     $xmlfile = simplexml_load_file(dirname(__FILE__) . "/xmlfile.xml"); 
     foreach ($xmlfile as $key => $value) 
      foreach ($value as $columnName => $item) { 
       if ($item == "-") { 
        break; 
       } elseif (array_search($columnName, $bing) !== FALSE) 
        $this->report[$columnName][] = $item; 
      } 

     foreach ($this->report as $key => $value) 
      foreach ($value as $index => $item) 
       echo $key."=>".$item."<br/>"; 
    } 

那些值

$bing = array(
"Adgroup", 
"Campaign", 
"Keyword", 
"Clicks", 
"Impr.", 
"Conv.", 
"Bid", 
"Adgroup" 
); 
+0

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

+0

好的,这个问题可能是不正确的。我使用json_decode,但后来我得到了需要3或4个嵌套foreach循环的东西,我需要帮助。 – rtom

+0

您的期望输出仍不清楚。它是多个相同的键或数组对的字典? –

回答

2
$json = json_decode($jsonString, true); 
$result = []; 
array_walk_recursive($json, function ($value, $key) use (&$result) { 
    $result[$key][] = $value; 
}); 
+0

谢谢,这看起来像一个有趣的功能,我们会看到如果我可以带一些工作代码。 – rtom