Поэтому я пытаюсь вернуть несколько полей из строки JSON, используя PHP, но всякий раз, когда я пытаюсь использовать foreach дважды, второе не отображается. Данные JSON содержат некоторую информацию, которая возвращает различное количество полей, и я хочу, чтобы она могла возвращать 1 или 10 при необходимости. Код, который у меня есть, отлично подходит для этого, но когда я возвращаю другой foreach после него, ничего не появляется. Если я добавляю поля, которые я пытаюсь включить во второй foreach, к первому, то иногда создается много дополнительных функций, основанных на возвращениях первых полей, которые, возможно, равны 10.
Вот PHP
foreach($decoded_results['sam_data']['registration']['qualifications']['acass']['answers'] as $acass)
{
echo '<strong>ACASS Answer Text: </strong>' . ($acass['answerText'] ? 'Yes' : 'No') .'</br>';
echo '<strong>ACASS Section: </strong>   '.$acass['section'].'</br>';
}
foreach($decoded_results ['sam_data']['registration']['qualifications']['acass']['answers']['FormerFirm'] as $formerfirm)
{
echo '<strong>Former Firm ID: </strong>   '.$formerFirm['id'].'</br>';
echo '<strong>Former Firm Year Established: </strong>   '.$formerFirm['yearEstablished'].'</br>';
}
Вот JSON
"qualifications": {
"acass": {
"id": "SF330",
"answers": [
{},
{
"answerText": "Yes",
"section": "SF330.2"
},
{
"FormerFirm": {
"id": 1,
"yearEstablished": aaaaaaaaa,
"name": "aaaaaaaaaaa",
"duns": aaaaaaaaaa
},
Структура JSON идет квалификация / доступ, а затем текст ответа и раздел находятся на том же уровне, что и прежняя фирма.
Любая помощь, которую вы, ребята, предоставляете, с благодарностью. Спасибо за ваше время.
Вот пример JSON
{
"sam_data": {
"registration": {
"govtBusinessPoc": {
"lastName": "EAVES",
"title": "OFFICEMANAGER",
"address": {
"zip": "72301",
"countryCode": "USA",
"line1": "207 West Bond Ave.",
"stateorProvince": "AR",
"city": "West Memphis"},
"email": "[email protected]",
"usPhone": "8707356502",
"firstName": "KELLY"},
"qualifications": {
"acass": {
"id": "SF330",
"answers": [
{
"answerText": "Yes",
"section": "SF330.1"},
{
"answerText": "Yes",
"section": "SF330.2"},
{
"FormerFirm": {
"id": 1,
"yearEstablished": 1968,
"name": "Fowler/Garey Architects, P.A.",
"duns": 960604007
}
}
]
}
}
}
}
}
Чтобы правильно отобразить PHP
# convert to array
# $data = json data
$decoded_results = json_decode($data, true);
$answers = $decoded_results['sam_data']['registration']['qualifications']['acass']['answers'];
foreach ($answers as $key => $acass) {
if (isset($acass['answerText']) && isset($acass['section'])) {
echo '<strong>ACASS Answer Text: </strong>' . ($acass['answerText']) .'</br>';
echo '<strong>ACASS Section: </strong>   '.$acass['section'].'</br>';
}
}
# get the FormerFirm
# using the array index of answers[2];
$formerfirm = $decoded_results['sam_data']['registration']['qualifications']['acass']['answers'][2]['FormerFirm'];
echo '<strong>Former Firm ID: </strong>   '.$formerfirm['id'].'</br>';
echo '<strong>Former Firm Year Established: </strong>   '.$formerfirm['yearEstablished'].'</br>';
Выход ::
ACASS Answer Text: Yes
ACASS Section: SF330.1
ACASS Answer Text: Yes
ACASS Section: SF330.2
Former Firm ID: 1
Former Firm Year Established: 1968
Надеюсь, это поможет
{
"sam_data": {
"registration": {
"govtBusinessPoc": {
"lastName": "EAVES",
"title": "OFFICEMANAGER",
"address": {
"zip": "72301",
"countryCode": "USA",
"line1": "207 West Bond Ave.",
"stateorProvince": "AR",
"city": "West Memphis"},
"email": "[email protected]",
"usPhone": "8707356502",
"firstName": "KELLY"},
"qualifications": {
"acass": {
"id": "SF330",
"answers": [
{
"answerText": "Yes",
"section": "SF330.1"},
{
"answerText": "Yes",
"section": "SF330.2"},
{
"FormerFirm": {
"id": 1,
"yearEstablished": 1968,
"name": "Fowler/Garey Architects, P.A.",
"duns": 960604007
}
}
]
}
}
}
}
}
To display it properly PHP
# convert to array
# $data = json data
$decoded_results = json_decode($data, true);
$answers = $decoded_results['sam_data']['registration']['qualifications']['acass']['answers'];
foreach ($answers as $key => $acass) {
if (isset($acass['answerText']) && isset($acass['section'])) {
echo '<strong>ACASS Answer Text: </strong>' . ($acass['answerText']) .'</br>';
echo '<strong>ACASS Section: </strong>   '.$acass['section'].'</br>';
}
}
# get the FormerFirm
# using the array index of answers[2];
$formerfirm = $decoded_results['sam_data']['registration']['qualifications']['acass']['answers'][2]['FormerFirm'];
echo '<strong>Former Firm ID: </strong>   '.$formerfirm['id'].'</br>';
echo '<strong>Former Firm Year Established: </strong>   '.$formerfirm['yearEstablished'].'</br>';
Решил проблему, столкнулся с другой проблемой, но для этой проблемы это было решением. Спасибо Оли Сопрони Б!