2013-07-07 123 views
1

我一直在試圖弄清楚爲什麼我的代碼就像它一樣簡單,並不按照我希望的方式工作。PHP XML反向數組sizeof()和count()返回不正確的值

我遇到的問題是,當試圖檢查反向simplexml數組上的sizeof()或count()時,得到了正確的值。我製作了一個評論表單,將評論存儲到comments.xml中,然後讀取5條最新評論,並將它們列在最新的最上面,最舊的最下面。

我有comments.xml裏面是什麼:

<root> 
<entry> 
    <name>Admin</name> 
    <comment>Some nice comment</comment> 
    <postedOn>07.07.2013</postedOn> 
    <postedBy>***.***.***.***</postedBy> 
</entry> 
</root> 

我有我的.PHP裏面是什麼:

<?php 
$xml = simplexml_load_file("comments.xml"); 

$reverseArray = (array) $xml; 
$reverseArray = array_reverse($reverseArray["entry"]); 
$limit = sizeof($reverseArray); 
//$limit = count($reverseArray); 

if($limit > 5){ $limit = 5; } 

for ($i = 0 ; $i < $limit; $i++){ 
    echo "<div class='panel'>"; 
    echo "<span style='float: right;'>" . $reverseArray[$i]->postedOn . "</span>"; 
    echo "<span style='float: left;'>" . $reverseArray[$i]->name . "</span>"; 
    echo "<hr>"; 
    echo $reverseArray[$i]->comment; 
    echo "<br></div>"; 
} 

?> 

現在的問題是,當我使用這個只有1內進入評論.xml,它不會讀取它,並且不會在頁面上打印任何內容。每當我添加另一個條目時,它都會顯示它們。

我也嘗試添加一個 - 代碼$漲停檢查之前「還沒有評論。」:

if($limit == 0){ echo "<div class='panel'>No comments. :(</div>";} 

而直到第二個評論張貼它是可見的。

我希望有人能夠幫助我解決這個問題,用盡想法。

編輯: 我試圖運行相同的代碼,沒有扭轉數組,它似乎工作得很好。

回答

0

我設法建立一個解決辦法,因爲的sizeof()/ COUNT()沒有與array_reverse很好地工作,這裏是它看起來像現在:

<?php 
$xmlfile = simplexml_load_file("comments.xml"); 
$limit = count($xmlfile->entry); 

if($limit == 0){ echo "<div class='panel'>No comments. :(</div>";} 

if($limit == 1){ 
    echo "<div class='panel'>"; 
    echo "<span style='float: right;'>" . $xmlfile->entry[0]->postedOn . "</span>"; 
    echo "<span style='float: left;'>" . $xmlfile->entry[0]->name . "</span>"; 
    echo "<hr>"; 
    echo $xmlfile->entry[0]->comment; 
    echo "<br></div>"; 
}else{ 
    $reverseArray = (array) $xmlfile; 
    $reverseArray = array_reverse($reverseArray["entry"]); 

    if($limit > 5){ $limit = 5; } 

    for ($i = 0 ; $i < $limit; $i++){ 
     echo "<div class='panel'>"; 
     echo "<span style='float: right;'>" . $reverseArray[$i]->postedOn . "</span>"; 
     echo "<span style='float: left;'>" . $reverseArray[$i]->name . "</span>"; 
     echo "<hr>"; 
     echo $reverseArray[$i]->comment; 
     echo "<br></div>"; 
    } 
} 
?> 

,所以我不得不讓它處理單項入場爲非逆轉。希望這可以幫助那些與之鬥爭的人!