我一直在试图弄清楚为什么我的代码虽然很简单,但不能按照我想要的方式工作。
我遇到的问题是在尝试检查反向 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>";}
在发布第二条评论之前,它是可见的。
我希望有人可以帮助我解决这个问题,没有想法。
编辑:我尝试在不反转数组的情况下运行相同的代码,它似乎工作得很好。