PHP JSON 解码到数组以获取特定键值(所有字段同名)
PHP JSON Decoding To Array To Grab Specific Key Values (All fields same name)
我正在从 API URL 中提取 JSON 数据。问题:在 FL 下有重复的 KEYS:"val" 和 "content"。我只需要拉出特定的KEYS。
如果我的格式不符合 SO 标准,请原谅。*
我的问题发布在 json 和代码下方。
JSON 从 URL
{
"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设置为HTMLTable
PHP JSON To Array Values Into HTML Table
只需编写代码来执行您描述的操作。如果它们不在您想要的字段列表中,就不要打印它们。
$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");
}
}
}
你只需要维护一个数组,你可以在其中提供你想要获取的所有选项,并在循环中检查它,如下例所示。
$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");
}
}
我正在从 API URL 中提取 JSON 数据。问题:在 FL 下有重复的 KEYS:"val" 和 "content"。我只需要拉出特定的KEYS。
如果我的格式不符合 SO 标准,请原谅。*
我的问题发布在 json 和代码下方。
JSON 从 URL
{
"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设置为HTMLTable
PHP JSON To Array Values Into HTML Table
只需编写代码来执行您描述的操作。如果它们不在您想要的字段列表中,就不要打印它们。
$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");
}
}
}
你只需要维护一个数组,你可以在其中提供你想要获取的所有选项,并在循环中检查它,如下例所示。
$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");
}
}