我一直在试图弄清楚为什么我的代码尽管很简单,却无法按照我想要的方式运行。
我遇到的问题是在尝试检查反向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>";}
直到第二条评论发布后才可见。
我希望有人可以帮助我解决问题。
编辑: 我尝试运行相同的代码而不反转数组,它似乎工作正常。
答案 0 :(得分: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>";
}
}
?>
所以我必须让它处理一个非反转的条目。希望这有助于其他与之斗争的人!