PHP의 Simplexml로 구문 분석하는 XML 파일이 있지만 노드를 통한 반복 문제가 있습니다.Simplexml 객체 노드 반복
는 XML :
<channel>
<item>
<title>Title1</title>
<category>Cat1</category>
</item>
<item>
<title>Title2</title>
<category>Cat1</category>
</item>
<item>
<title>Title3</title>
<category>Cat2</category>
</item>
</channel>
내 계산 기능 :
public function cat_count($cat) {
$count = 0;
$items = $this->xml->channel->item;
$size = count($items);
for ($i=0; $i<$size; $i++) {
if ($items[$i]->category == $cat) {
$count++;
}
}
return $count;
}
내가 내 코드에서 오류가 내려다 보이는 건가요, 또는 노드를 통해 반복에 대한 또 다른 바람직한 방법은 무엇입니까? 나는 또한 foreach와 while 문을 운을 사용하지 않았으므로 잃어 버렸습니다. 어떤 제안?
편집 : 아래의 XPath는 방법을 사용하는 동안, 나는
foreach ($this->xml->channel->item as $item) {
echo $item->category;
}
를 사용하여 사용하여, 모든 카테고리 이름을 인쇄 만 할 것으로 나타났습니다
foreach ($this->xml->channel->item as $item) {
if ($item->category == $cat) {
echo $item->category;
}
}
에만 두 배로 카테고리의 인스턴스를 인쇄합니다 . 선을 복사하여 붙여 넣은 경우에도 하나만 표시됩니다. 이것은 XML 구조가 어떻게 든 무효가 될 수 있다는 것을 의미합니까?
죄송합니다 끔찍한 서식. 내 모바일이 편집자와 잘 어울리지 않습니다. 그에 맞게 수정하십시오. – MorbidWrath
항목이 여러 번 반복되므로 반복해야하거나 $ this-> xml-> channel-> item [0], $ this-> xml-> channel-> item [1] 등으로 참조해야합니다. –
나는 실제로하고있다. 그냥 잘못 입력 했어. 코드를 업데이트했습니다. – MorbidWrath