PHP实现XML Feed随机排序失败,求助解决方法
解决XML评论列表随机排序的问题
你遇到的问题我懂——想把默认按日期排序的XML评论改成随机展示,但用shuffle没效果,对吧?看了你的代码,问题出在你直接遍历了SimpleXMLElement里的原始节点集合,shuffle没法直接对这种特殊对象生效。
给你调整一下代码,核心思路是先把所有评论节点提取成普通数组,再打乱顺序,最后遍历这个打乱后的数组:
// Build the Feed $feed = "http://www.reviewswebsite.com/api/consumer-reviews/?username=" . $userName . "&format=xml&reviews_per_page=20&page=" . $pageNumber; $xml = simplexml_load_file($feed); // 第一步:把所有review节点提取到普通数组中 $reviewsArray = []; foreach ($xml->reviews->review as $review) { $reviewsArray[] = $review; } // 第二步:打乱数组顺序 shuffle($reviewsArray); // 第三步:遍历打乱后的数组输出内容 foreach ($reviewsArray as $review) { $reviewer_name = $review->reviewer_name; $date_of_work = date('l, d m Y', strtotime($review->date_of_work)); $average_reviewer_rating = (float)$review->average_rating; ?> <div><?php echo $reviewer_name; ?></div> <!-- 这里放你原来的其他输出内容 --> <?php }
为什么之前的shuffle没用?因为$xml->reviews->review是SimpleXMLElement的节点集合,不是普通的PHP数组,shuffle函数只能处理标准数组。先把节点转存到普通数组里,再打乱就没问题了。
内容的提问来源于stack exchange,提问作者Eoin
相关产品推荐
相关产品推荐

