【问题标题】:PHP JSON Decoding To Array To Grab Specific Key Values (All fields same name)PHP JSON解码到数组以获取特定键值(所有字段同名)
【发布时间】:2019-08-26 11:20:17
【问题描述】:

我正在从 API URL 中提取 JSON 数据。问题:在 FL 下有重复的 KEYS:“val”和“content”。我只需要提取特定的 KEYS。

如果我的格式不符合 SO 标准,请见谅。*

我的问题贴在json和代码下面。

来自 URL 的 JSON

{
    "response": {
        "result": {
            "Leads": {
                "row": [
                    {
                        "no": "1",
                        "FL": [
                            {
                                "val": "LEADID",
                                "content": "123"
                            },
                            {
                                "val": "SMOWNERID",
                                "content": "3232"
                            },
                            {
                                "val": "Lead Owner",
                                "content": "Cassie"
                            },
                            {
                                "val": "First Name",
                                "content": "Bobby"
                            },
                            {
                                "val": "Last Name",
                                "content": "Something"
                            },
                            {
                                "val": "Email",
                                "content": "email@gmail.com"
                            },
                            {
                                "val": "Mobile",
                                "content": "1111111111"
                            },
                            {
                                "val": "SMCREATORID",
                                "content": "0000003213"
                            },
                            {
                                "val": "Created By",
                                "content": "Cassie"
                            },
                            {
                                "val": "Created Time",
                                "content": "2019-04-03 15:14:05"
                            },
                            {
                                "val": "Modified Time",
                                "content": "2019-04-03 17:13:58"
                            },
                            {
                                "val": "Full Name",
                                "content": "Bobby Something"
                            },
                            {
                                "val": "Street",
                                "content": "123 Fake Rd"
                            },
                            {
                                "val": "City",
                                "content": "Fakecity"
                            },
                            {
                                "val": "State",
                                "content": "FK"
                            },
                            {
                                "val": "Zip Code",
                                "content": "11111"
                            },
                            {
                                "val": "Email Opt Out",
                                "content": "false"
                            },
                            {
                                "val": "Salutation",
                                "content": "Mr."
                            },
                            {
                                "val": "Last Activity Time",
                                "content": "2019-04-03 17:13:58"
                            },
                            {
                                "val": "Tag",
                                "content": "Tag"
                            },
                            {
                                "val": "Account Name",
                                "content": "Something"
                            },
                            {
                                "val": "Territory Manager",
                                "content": "Michael Something"
                            },
                            {
                                "val": "Territory Manager_ID",
                                "content": "321237000000291111"
                            },
                            {
                                "val": "Classification",
                                "content": "Something"
                            },
                            {
                                "val": "Area",
                                "content": "Zone 1"
                            },
                            {
                                "val": "Account Number",
                                "content": "32345"
                            }
                        ]
                    }
                ]
            }
        },
        "uri": "/crm/private/json/Leads/getRecords"
    }
}

PHP 代码

$url = 'URL';
$data = file_get_contents($url);
$parsed = json_decode($data, true);

$eachEntry = $parsed['response']['result']['Leads']['row'];

foreach ($eachEntry as $entry) {

    $FL = $entry['no'];

    //printf('%s'.PHP_EOL, $FL);
    printf("\n");

    $entries = $entry['FL'];

    foreach ($entries as $value) {

        $val = $value['val'];

        $content = $value['content'];

        $out = $val." ".$content;

        printf('%s'.PHP_EOL, $out);
        printf("\n");
    } 

}

结果

LEADID 123

SMOWNERID 3232

Lead Owner Cassie

First Name Bobby

Last Name Something

Email email@gmail.com

Mobile 1111111111

SMCREATORID 0000003213

Created By Cassie

Created Time 2019-04-03 15:14:05

Modified Time 2019-04-03 17:13:58

Full Name Bobby Something

Street 123 Fake Rd

City Fakecity

State FK

Zip Code 11111

Email Opt Out false

Salutation Mr.

Last Activity Time 2019-04-03 17:13:58

Tag Tag

Account Name Something

Territory Manager Michael Something

Territory Manager_ID 321237000000291111

Classification Something

Area Zone 1

Account Number 32345

问题

如何仅提取示例中下面列出的字段?并且不要拉所有领域。

示例

"val": "First Name",
"content": "Bobby"

,

"val": "Last Name",
"content": "Something"

,

"val": "Street",
"content": "123 Fake Rd"

,

"val": "City",
"content": "Fakecity"

,

"val": "State",
"content": "FK"

,

"val": "Zip Code",
"content": "11111"

预期输出

First Name Bobby

Last Name Bobby

Street 123 Fake Rd

City Fakecity

State FK

Zip Code 11111

将 JSON 从 URL 设置为 HTML 表

PHP JSON To Array Values Into HTML Table

【问题讨论】:

    标签: php arrays json zoho


    【解决方案1】:

    只需编写代码来执行您描述的操作。如果它们不在您想要的字段列表中,请不要打印它们。

    $valuesIWant = ["First Name", "Last Name", "Street", "City", "State", "Zip Code"];
    
    foreach ($eachEntry as $entry) {
    
        $FL = $entry['no'];
    
        //printf('%s'.PHP_EOL, $FL);
        printf("\n");
    
        $entries = $entry['FL'];
    
        foreach ($entries as $value) {
    
            $val = $value['val'];
    
            $content = $value['content'];
    
            if (in_array($val, $valuesIWant)) {
                $out = $val." ".$content;
    
                printf('%s'.PHP_EOL, $out);
                printf("\n");
            }
    
        } 
    }
    

    【讨论】:

    • 真的就是这么简单:) - 标记为答案。非常感谢!
    【解决方案2】:

    您只需要维护一个数组,您可以在其中提供您想要获取的所有选项并在循环中检查这些选项,如下例所示。

    $url = 'URL';
    $data = file_get_contents($url);
    $parsed = json_decode($data, true);
    
    $eachEntry = $parsed['response']['result']['Leads']['row'];
    
    $required = ['First Name','Last Name','Street','City','State','Zip Code'];
    
    foreach ($eachEntry as $entry) {
    
        $FL = $entry['no'];
    
        //printf('%s'.PHP_EOL, $FL);
        printf("\n");
    
        $entries = $entry['FL'];
    
        foreach ($entries as $value) {
    
            if(!in_array($value['val'],$required))
                continue;
    
            $val = $value['val'];
    
            $content = $value['content'];
    
            $out = $val." ".$content;
    
            printf('%s'.PHP_EOL, $out);
            printf("\n");
       } 
    
    }
    

    【讨论】:

      猜你喜欢
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-03
      • 2011-12-18
      • 2019-11-04
      • 2022-12-16
      相关资源
      最近更新 更多