2010-02-20 77 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;它似乎知道,在默認情況下;-)

我希望這可以幫助其他人。