出于某种原因,我想使用for循环,而不是foreach,那么如何获得$item的长度呢? count() 对我不起作用。
$xml = "http://www.labnol.org/feed/";
$xmlDoc = new DOMDocument();
$xmlDoc->load($xml);
$x=$xmlDoc->getElementsByTagName('item');
var_dump(count($x->item(0)));
for ($i=0; $i<=5; $i++) {
}
你想
使用->lenth
,你应该这样做
var_dump($x->length);
$x = $xmlDoc->getElementsByTagName('item');
的结果是一个DOMNodeList
,并且具有$length
属性。
var_dump($x->length);
将返回节点列表的长度。
节点列表也实现了Traversable
。因此,它们可以与foreach一起使用。
foreach ($x as $item) {
//...
}
但是,XPath 比 DOM 方法更灵活。您可以获取项目计数或前 6 个item
节点。
$xpath = new DOMXPath($xmlDoc);
var_dump($xpath->evaluate('count(//item)'));
foreach ($xpath->evaluate('//item[position() <= 5]') as $item) {
...
}