2013-08-23 11 views
0

PubMed Central API에서 가져온 정렬 된 정보를 출력하는 스크립트를 프로그래밍하고 있습니다. 내 문제는 첫 번째 및 두 번째 저자뿐만 아니라 첫 번째 두 번째 키워드를 가져오고 싶다는 것입니다.이 질문의 목적을 위해, 우리는 단 하나의 키워드에만 집중할 수 있습니다. 좋은 예가 $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'contrib-group'}->contrib->name->surname입니다. 나는 분명히 인쇄 할 이름을 얻을 수 있습니다.다차원 배열의 특정 요소 ID 값을 에코하기

내가 원하는 것을 얻기 위해 foreach 루프가 필요한 다른 게시물을 읽는 것이 내 이해입니다. 그러나 나는이 상황에서 이것을 구현하는 방법을 이해하지 못한다. 내 코드는 다음과 같습니다 :

<?php 
$PMCID = 3545513; 
$url = 'http://www.pubmedcentral.nih.gov/oai/oai.cgi?verb=GetRecord&identifier=oai:pubmedcentral.nih.gov:'.$PMCID.'&metadataPrefix=pmc_fm'; 
$xml = new SimpleXMLElement(file_get_contents($url)); 
?> 
<table> 
<tr> 
<td>Journal Title</td><td>Year</td><td>Issue</td><td>NOC_Country</td><td>State</td><td>City</td><td>Primary Institution</td><td>Secondary Institution</td><td>First Author</td><td>Second Author</td><td>Topic</td><td>Target Behavior 1</td><td>Target Behavior 2</td><td>Population</td><td>Paper</td><td>Status</td> 
</tr> 
<tr> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'journal-meta'}->{'journal-title-group'}->{'journal-title'};?></td> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'pub-date'}->year;?></td> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->issue;?></td> 
<td></td> 
<td></td> 
<td></td> 
<td></td> 
<td></td> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'contrib-group'}->contrib->name->surname;?>, <?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'contrib-group'}->contrib->name->{'given-names'};?></td> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'contrib-group'}->contrib->name->surname;?>, <?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'contrib-group'}->contrib->name->{'given-names'};?></td> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'title-group'}->{'article-title'};?></td> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'kwd-group'}->kwd;?></td> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'kwd-group'}->kwd;?></td> 
<td></td> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'article-categories'}->{'subj-group'}->subject;?></td> 
<td></td> 
</tr> 
</table> 

어떤 도움을 주시면 감사하겠습니다!

+0

'GetRecord-> 기록 -> metadata-> article-> 앞 -> { '기사 - 메타'} -> { '의 contrib <에코 PHP $ XML-?> -group '} -> contrib-> name-> surname;?>'<- 이것은 Demeter의 법칙을 너무 세게 깨뜨린다. * – Yang

+0

당신은 더 우아한 것을 무엇을 제안합니까? – Jackson

답변

0

와 함께 종료 :

<table> 
<tr> 
<td><strong>Journal Title</strong></td><td><strong>Year</strong></td><td><strong>Issue</strong></td><td><strong>First Author</strong></td><td><strong>Second Author</strong></td><td><strong>Topic</strong></td><td><strong>Target Behavior 1</strong></td><td><strong>Target Behavior 2</strong></td><td><strong>Paper</strong></td> 
</tr> 
<?php 
$PMCID = $_REQUEST['PMCID']; 
$url = 'http://www.pubmedcentral.nih.gov/oai/oai.cgi?verb=GetRecord&identifier=oai:pubmedcentral.nih.gov:'.$PMCID.'&metadataPrefix=pmc_fm'; 
$xml = new SimpleXMLElement(file_get_contents($url)); 
?> 
<tr> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'journal-meta'}->{'journal-title-group'}->{'journal-title'};?></td> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'pub-date'}->year;?></td> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->issue;?></td> 
<?php 
$n=0; 
foreach($xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'contrib-group'} as $author){ 
    echo "<td>" . $author->contrib->name->surname . ", "; 
    echo $author->contrib->name->{'given-names'} . "</td>"; 
$n++; 
if($n==2) break; 
} 
unset($n); 
unset($author); 
?> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'title-group'}->{'article-title'};?></td> 
<?php 
$i=0; 
foreach($xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'kwd-group'}->kwd as $keyword){ 
    echo "<td>" . $keyword . "</td>"; 
$i++; 
if($i==2) break; 
} 
unset($i); 
unset($keyword); 
?> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'article-categories'}->{'subj-group'}->subject;?></td> 
</tr> 
</table> 
관련 문제