如何限制SimpleXML结果的总数?

时间:2010-02-20 06:34:39

标签: php xml simplexml twitter

我希望限制前5个结果returned here

这样可行,但不限制数据集:

<?php

foreach($sxml->status as $status){
$name = $status->user->name;
$image =$status->user->profile_image_url;
$update =$status->text;
$url = "http://twitter.com/" .$status->user->screen_name;

echo "<li><a href=\"" . $url . "\"><img src=\"" . $image . "\" alt=\"" . $name . " image\" />" . $name . " </a> " . $update . "</li>";

}

?>

我试过这个:

<?php

for($n = 0; $n <= 5; $n++){
$name = $sxml->$status[$n]->user->name;
$image = $sxml->$status[$n]->user->profile_image_url;
$update = $sxml->$status[$n]->text;
$url = "http://twitter.com/" . $sxml->$status[$n]->user->screen_name;

echo "<li><a href=\"" . $url . "\"><img src=\"" . $image . "\" alt=\"" . $name . " image\" />" . $name . " </a> " . $update . "</li>";

}

?>

我真的不确定为什么它不起作用。如果我只是这样做:

<?php echo $sxml->status[0]->user->name ?>
然后我得到了正确的结果。但是当在for循环中尝试它时,我得到NULL。

也许某种程度的时间?完全不同的设置?非常感谢你们给予的任何帮助。

5 个答案:

答案 0 :(得分:4)

改变这个:

for($n = 0; $n <= 5; $n++){
$name = $sxml->$status[$n]->user->name;
$image = $sxml->$status[$n]->user->profile_image_url;
$update = $sxml->$status[$n]->text;
$url = "http://twitter.com/" . $sxml->$status[$n]->user->screen_name;

echo "<li><a href=\"" . $url . "\"><img src=\"" . $image . "\" alt=\"" . $name . " image\" />" . $name . " </a> " . $update . "</li>";

}

对此:

for($n = 0; $n <= 5; $n++){
$name = $sxml->status[$n]->user->name;
$image = $sxml->status[$n]->user->profile_image_url;
$update = $sxml->status[$n]->text;
$url = "http://twitter.com/" . $sxml->status[$n]->user->screen_name;

echo "<li><a href=\"" . $url . "\"><img src=\"" . $image . "\" alt=\"" . $name . " image\" />" . $name . " </a> " . $update . "</li>";

}

你不小心写了这个:

<?php echo $sxml->$status[0]->user->name ?>

它试图将$status[0]作为变量变量,当然,它不存在,因此未定义/为空。

答案 1 :(得分:3)

如果你有一些有效的东西,为什么要通过改变一切来使事情过于复杂?只需将处理限制为前N个条目。

$i = 0;
foreach ($sxml->status as $status) {
    if (++$i > 5) {
        // stop after 5 loops
        break;
    }
    // the rest is identical
}

答案 2 :(得分:1)

顺便说一下,$n = 0; $n <= 5; $n++将限制前6个条目,而不是5个。

$n = 0; $n < 5; $n++会按照你的要求行事。

答案 3 :(得分:0)

你不是说 $ n = 0; $ n&lt; 4; $的n ++

答案 4 :(得分:0)

我也试过这个,效果很好: - )

foreach($ xml-&gt; item as $ item){   if(++ $ i&gt; 5){break; }   $ item-&gt;标题。 '
'; } // foreach()

注意我没有使用$ i = 0;它似乎知道默认情况下; - )

我希望这对某人有所帮助。