2010-02-20 44 views
1

我在寻找限制前5个结果returned here如何限制SimpleXML结果的总数?

这工作,但它不限制数据集:

<?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。

也许某种同时?完全不同的设置?非常感谢您为此提供的任何帮助。

回答

2

更改此:

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]作为变量变量和当然,这不存在,因此是undefined/null。

+0

Doggonit,这是愚蠢的错误的一周。非常感谢帮助:) –

3

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

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

男人,每个人的伟大解决方案。我很欣赏这种**第二种方法来完成它。所有这些东西一旦我看到它就会变得非常有意义,但解决方案不会立即找到我。不过,我想这会随着时间的推移而来。谢谢,乔希,这里有个好主意。 –

1

顺便说一句,$n = 0; $n <= 5; $n++将限制第一6个条目,不是5

$n = 0; $n < 5; $n++会做你问什么。

+0

认识到,一旦我实施它,非常感谢这里的提醒。 –

0

不要你的意思 $ N = 0; $ n < 4; $ N ++

0

我也试了这一点,它的伟大工程:-)

的foreach($ XML->项为$项目){ 如果(++ $ I> 5){打破; } $ item-> title。 '
'; } // foreach()

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

我希望这可以帮助其他人。