Php 使用For语句调用RSS提要会导致非对象错误

Php 使用For语句调用RSS提要会导致非对象错误,php,rss,for-loop,Php,Rss,For Loop,我正在使用一个简单的For语句显示RSS提要 对于($i=0;$i总是可以安全地找到元素的数量。然后使用 对于($i=0;$igetElementsByTagName('title')->item(0)->childNodes->item(0)->nodeValue;echo($item_title)}问题是我只想显示最大值20。我如何使用$length但限制为20?我甚至不知道如何找到RSS提要中的元素数?如果($length>20){$length=20;}这将把长度保存为最小值$lengt

我正在使用一个简单的For语句显示RSS提要


对于($i=0;$i总是可以安全地找到元素的数量。然后使用


对于($i=0;$i<$length;$i++)

在执行
for
语句之前,请检查
$item
的长度:

if(count($item) > 19) {
    //do your for statement
} else {
    //do a foreach statement
}
或者,在尝试解析之前,您可以检查
$item[$i]
是否存在(不是
null
),我猜这就是您的错误产生的原因

for ($i=0; $i<=19; $i++) {
    if(array-key-exists($i, $item)) {
        //do everything you want
    }
    $i++;
}

您可以提供更多的代码吗?您将RSS提要加载到什么类型的对象中?您可以使用
empty()检查对象是否存在
或使用foreach循环而不是for循环。它只是RSS提要中格式化的链接列表。实际上,有些链接的项目数将超过20个,有些则更少,但我希望它们都使用相同的代码显示。基本上,$I=0;$iitem($I)->getElementsByTagName('title')->item(0)->childNodes->item(0)->nodeValue;echo($item_title)}问题是我只想显示最大值20。我如何使用$length但限制为20?我甚至不知道如何找到RSS提要中的元素数?如果($length>20){$length=20;}这将把长度保存为最小值$length和20
$length=min($length,20)
无法让它工作,这两个都没有给我任何信息:
如果($length>20){$length=20;}for($i=0$i@user979564我不明白为什么不可以。您能发布显示上述方法不起作用的完整代码(或代码的工作部分)吗?$length=min($length,20);for($I=0;$iitem($I)->getElementsByTagName('title'))->item(0)->childNodes->item(0)->nodeValue;echo($item_title);}@user979564我在上面发布的答案中添加了一个代码示例。
for ($i=0; $i<=19; $i++) {
    if(array-key-exists($i, $item)) {
        //do everything you want
    }
    $i++;
}
// set $length to the lenght of your RSS array
$length = count($your_rss_array);

// if your RSS array has more than 20 items, limit $length to 20
if(count($item) > 20) {
    $length = 20;
}

// $length will either be as long as the RSS array is, or will be 20
for ($i = 0; $i < $length; $i++) {
    $item_title = $x -> item($i) -> getElementsByTagName('title') -> item(0) ->
                  childNodes -> item(0) -> nodeValue;
    echo $item_title;
}