0

对 JSON 完全陌生,我的任务是使用 php 对远程 JSON 进行过滤/排序,并将格式化的结果嵌入到 CMS 中。

数据结构如下所示:

"Categories":[
  {
     "Name":"Americas",
     "ID":"12345",
     "Countries":[
        {
           "Name":"Argentina",
           "Partners":[
              {
                 "Country":"Argentina",
                 "ID":"4321",
                 "LogoUrl":"logo1.jpg",
                 "Title":"Company A",
                 "AddressBlock":"123 Main Street",
                 "Phone":"444-555-1212",
                 "TollFree":"",
                 "Email":"info@CompanyA.com",
                 "Url":"http://www.CompanyA.com/",
                 "IsVisible":true,
                 "IsDistributor":false
              }
           ]
        },
        {
           "Name":"Brazil",
           "Partners":[
              {
                 "Country":"Brazil",
                 "ID":"5432",
                 "LogoUrl":"logo2.jpg",
                 "Title":"Company B",
                 "AddressBlock":"54 Center Street",
                 "Phone":"234-567-3600",
                 "TollFree":"",
                 "Email":"info@CompanyB.com",
                 "Url":"http://www.CompanyB.com",
                 "IsVisible":true,
                 "IsDistributor":false
              },

    "Name":"Canada",
           "Partners":[
              {
                 "Country":"Canada",
                 "ID":"Company C",
                 "LogoUrl":"logo3.Company C",
                 "AddressBlock":"1 Mll Road Floor 27\r\nCanton, ON",
                 "Phone":"555-66-7777",
                 "TollFree":"",
                 "Email":"info@CompanyC.com",
                 "Url":"http://www.CompanyC.com",
                 "IsVisible":true,
                 "IsDistributor":false
              },

           ]
        }
     ]
  }

]

理想情况下,我想将键/值对存储在一个数组中,然后将它们打印为按字母顺序排序的列表。每个国家/地区可以有多个条目,并且需要隐藏那些设置为“IsVisible:false”的条目。

我在这里做了一些搜索,我可以找到数据源,但数组没有“爆炸”或通过 php 循环遍历其维度并返回:

Categories:Array 

使用此代码:

 $string = file_get_contents("https://myURL.securekey");
foreach ($json_a as $key => $value)
 {
   foreach($value as $v)
   {
       echo $v."  ";
   }
 }

任何帮助将不胜感激。

谢谢!

4

1 回答 1

0

编辑:所以通过使用以下内容:

 $string =  file_get_contents('https://secure.json');
 $json = json_decode($string, true);
 foreach($json as $fieldIndex => $fields) { 
    foreach($fields as $valueIndex => $envelope) {
        foreach($envelope as $valueEntry) {
            foreach($valueEntry as $key => $value) {
                if ($key == "Name") {
                echo $value;
                }
                printf("%d - %d - %s: '%s'\n", $key, $value);
                $build[$valueIndex][$key]=$value;               
            }
        }
    }
}
var_dump($build);

我得到以下输出:

0 - 0 - 0:'数组' 0 - 0 - 1:'数组' 0 - 0 - 2:'数组' 0 - 0 - 3:'数组' 0 - 0 - 4:'数组' 0 - 0 - 5 : '数组' array(1) { [0]=> array(6) { [0]=> array(2) { ["Name"]=> string(9) "Argentina" ["Partners"]=>数组(1){[0]=>数组(11){[“国家”]=>字符串(9)“阿根廷”[“ID”]=>字符串(36)“4d93”[“LogoUrl”]=> string(52) " http://www.aaa.com/images/partners/aaa.jpg " ["Title"]=> string(14) "公司 SA" ["AddressBlock"]=> string(118) " Main Street - Dock 8 12435- Anytown USA" ["Phone"]=> string(17) "(444) 123-4567" ["TollFree"]=> string(0) "" ["Email"]=>string(28) "info@aaa.com" ["Url"]=> string(35) " http://www.aaaa.com/ " ["IsVisible"]=> bool(true) ["IsDistributor"] => 布尔(假) } } }

但仍然不确定如何引用特定的名称/值以在需要的地方回显它们。我假设可能是这样的:

if ($key == "Title") {
  echo "Title: " . $key . "<br />";
}  esleif ($key == "Country") {
  echo $value;
 }

但是我被困在a)将它放在循环中的哪个位置,以便它实际上在正确的级别上抓取值和b)语法(必须关闭,因为我仍然只能看到最后带有 var_dump 的任何内容,而不是回显循环内的值。

于 2013-06-18T20:25:15.723 回答