我从政府API获得此JSON输出,我需要使用PHP显示它。问题是我不能连续使用foreach一次或者它不起作用。我无法将所有标准加载到第一个foreach中,因为说第一个数据ACASS返回3个结果,其后的所有字段将显示3次。每个字段都可以返回1-10个结果,因此需要有一个系统来计算变量。
我认为解决方案是将我需要的所有JSON项目显示在第一个foreach中,但将它们设置为仅在它们被填充时才显示。那或者使用我现有的编码系统,但不知怎的,以某种方式解释变数。
非常感谢任何可能的解决方案。
这是JSON输出... https://api.data.gov/sam/v4/registrations/9606040070000?api_key=WI7nHENlp6QDMnWsb0Nnmzsv1slPDTjNM0XBoKvY
这是PHP我使用的...
echo "ACASS ID:".$decoded_results['sam_data']['registration']['qualifications']['acass']['id']."</br>";
foreach($decoded_results['sam_data']['registration']['qualifications']['acass']['answers'] as $acass)
{
echo 'Answer Text:'.$acass['answerText'].'</br>';
echo 'ACASS Section:'.$acass['section'].'</br>';
}
$formerfirm = $decoded_results['sam_data']['registration']['qualifications']['acass']['answers'][2]['FormerFirm'];
echo 'Former Firm ID:'.$formerfirm['id'].'</br>';
echo 'Former Firm Year Established:'.$formerfirm['yearEstablished'].'</br>';
echo 'Former Firm Name:'.$formerfirm['name'].'</br>';
echo 'Former Firm DUNS'.$formerfirm['duns'].'</br>';
我尽力保持这个简短明了的问题/代码。总之,问题是如果你看一下JSON,数据层次结构会在ACASS / Answers下显示很多信息,然后显示下一个类别。我永远不知道会有多少回复,我不知道如何解释这些变量。
我要感谢这些董事会上的所有人,他们指导我成为新成员并帮助我发布更清晰,更简洁的问题。还要感谢每个花时间帮助我学习成为更好的程序员的人。
答案 0 :(得分:2)
使用像http://jsonviewer.stack.hu/这样的工具来显示你的json结构。它有很大帮助。
<?php
$url = "https://api.data.gov/sam/v4/registrations/9606040070000?api_key=WI7nHENlp6QDMnWsb0Nnmzsv1slPDTjNM0XBoKvY";
$contents = json_decode(file_get_contents($url));
// echo var_dump($contents);
$sam_data = $contents->sam_data;
// echo var_dump($sam_data);
$registration = $sam_data->registration;
//echo var_dump($registration);
$acass = $contents->sam_data->registration->qualifications->acass;
$id = $acass->id;
echo "id: ". $id . "<br />";
//echo var_dump($acass->answers);
foreach($acass->answers as $answer) {
if(isset($answer->FormerFirm)) {
$formerFirm = $answer->FormerFirm;
echo var_dump($formerFirm);
}
}