PHP の Simplexml を使用して解析している XML ファイルがありますが、ノードの繰り返しで問題が発生しています。
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;
}
}
倍増したカテゴリのインスタンスを 1 つだけ出力します。行をコピーして貼り付けても、1つしか表示されません。これは、XML 構造が無効である可能性があることを意味しますか?