从多维JSON中的键获取子值

时间:2018-07-24 11:09:41

标签: php arrays json

我已经拔头发好几天了,我想我只是再也看不到了。希望其他人可能有比我认为更简单的解决方案:-/

我有以下JSON代码:

{  
   "status":"success",
   "data":{  
      "first_name":"Paul",
      "custom_fields":[  
         {  
            "id":55112,
            "name":"EmailSoSoLead",
            "type":"text",
            "description":"",
            "value":"huh@gmail.com"
         },
         {  
            "id":55113,
            "name":"TelNrSoSoLead",
            "type":"number",
            "description":"",
            "value":4654566465456
         },
         {  
            "id":116162,
            "name":"OrderAmount",
            "type":"number",
            "description":"",
            "value":6956
         },
      ],
      "tags":[  
         {  
            "id":1705169,
            "name":"RealtorLeadComplete"
         },
         {  
            "id":3542812,
            "name":"cbs_trialcode_received"
         }
      ]
   }
}

我正在尝试从自定义字段中获取电子邮件地址。

我几乎尽力了。

获取标签很容易,但是我在特定的自定义字段上遇到了麻烦。

foreach($json_obj->data->custom_fields as $mc_uid_cuf_data)
{
    foreach($mc_uid_cuf_data as $key => $value)
    {
        echo $key . ': ' . $value;
        ...

效果很好,打印效果很好。但是我需要具体的。

我尝试过:

if (in_array('EmailSoSoLead', $mc_uid_cuf_data)) {

还有这个

if ($key == "name" && $value == "EmailSoSoLead")
      $email = $json_obj->data->custom_fields->value; 

我的JSON被解码为对象,而不是关联数组:

$json_obj          = json_decode($server_output);

说实话,我现在已经做了很多尝试,现在我基本上是在空白拍摄,太困惑了。有人吗?

1 个答案:

答案 0 :(得分:0)

因为您正在测试一个属性,然后尝试获取另一个属性的值,但它们都位于数组中。

例如,捕获外循环的索引并将其用于您试图捕获的电子邮件地址中

foreach($json_obj->data->custom_fields as $occ => $mc_uid_cuf_data) {
    foreach($mc_uid_cuf_data as $key => $value) {
        echo $key . ': ' . $value;

        if ($key == "name" && $value == "EmailSoSoLead") 
            $email = $json_obj->data->custom_fields[$occ]->value;
        ...