1

我一直在试图弄清楚为什么我的代码虽然很简单,但不能按照我想要的方式工作。

我遇到的问题是在尝试检查反向 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>";
}

?>

现在的问题是,当我在comments.xml 中仅使用1 个条目时,它不会读取它,并且在页面上什么也不打印。每当我添加另一个条目时,它都会显示它们。

我还尝试在 $limit-check 之前添加“还没有评论。”-代码:

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

在发布第二条评论之前,它是可见的。

我希望有人可以帮助我解决这个问题,没有想法。

编辑:我尝试在不反转数组的情况下运行相同的代码,它似乎工作得很好。

4

1 回答 1

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>";
    }
}
?>

所以我不得不让它处理一个不可逆的条目。希望这可以帮助其他与之斗争的人!

于 2013-07-08T03:59:14.237 回答