PHP 以随机顺序输出我的 XML 提要
PHP Output my XML feed in a random order
我的 XML 输出工作正常,但它是最新的日期顺序。如果我能以随机顺序得到它,那就太棒了。我试过使用 shuffle
但我无法让它工作(似乎什么也没发生)。
这是我用来构建 XML 的代码示例。输出是 HTML 和 PHP 来插入变量。
// 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);
for($i = 0; $i < $numberOfForLoops; $i++)
{
$reviewer_name = $xml->reviews->review[$i]->reviewer_name;
$date_of_work = date('l, d m Y' , strtotime($xml->reviews->review[$i]->date_of_work));
$average_reviewer_rating = (float)$xml->reviews->review[$i]->average_rating;
..
?>
<div><?php echo $reviewer_name; ?></div>
...
<?php ;} ?>
@第四只鸟通过这个link帮助我:
我为 Trust-A-Trader 评论创建的最终结果,我将其内置到 Joomla!模块 是。我将尝试在 Joomla! 上免费发布该模块!扩展目录 (JED)。
结束代码是
$feed = "http://www.trustatrader.com/api/consumer-reviews/?username=" . $userName . "&format=xml&reviews_per_page=20&page=" . $pageNumber;
$xml = simplexml_load_file($feed);
// Count Reviews, if total number of reviews is less than the total shown on page set in module then show the lesser amount to avoid an error.
$totalNumberOfReviews = count($xml->reviews->review);
$numberOfForLoops = $totalNumberOfReviews;
if ($totalNumberOfReviews > $numberOfReviews) {
$numberOfForLoops = $numberOfReviews;
}
// If the module sets the order to random then shuffle array, or else do in latest first date order.
if ($params->get('Order') == 0) {
foreach($xml->reviews->review as $val)
$array[]= $val;
shuffle($array);
}
// Loop through the reviews and output them.
foreach($array as $val)
{
$i = 0;
if ($i < $numberOfForLoops)
{
?>
<div class="mod_trust_a_trader_reviews--review g-grid" itemscope itemtype="http://schema.org/Review" itemprop="review" >
<div class="review g-block size-100" itemprop="reviewBody">
<?php echo $val->comments; ?>
</div>
<div class="authorBlock g-grid size-100">
<span class="author g-block size-100" itemprop="author">
<?php echo $val->reviewer_name; ?>
</span>
</div>
<div class="score g-block size-100 g-grid">
<div class="g-block size-100">
<?php starRatingImage($val->average_rating); ?>
</div>
<div class="g-block size-100 reviewRating">
<?php echo '(<span itemprop="reviewRating">' . $val->average_rating . '</span>)'; ?>
</div>
</div>
</div>
<?php
}
$i++;
}
?>
我的 XML 输出工作正常,但它是最新的日期顺序。如果我能以随机顺序得到它,那就太棒了。我试过使用 shuffle
但我无法让它工作(似乎什么也没发生)。
这是我用来构建 XML 的代码示例。输出是 HTML 和 PHP 来插入变量。
// 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);
for($i = 0; $i < $numberOfForLoops; $i++)
{
$reviewer_name = $xml->reviews->review[$i]->reviewer_name;
$date_of_work = date('l, d m Y' , strtotime($xml->reviews->review[$i]->date_of_work));
$average_reviewer_rating = (float)$xml->reviews->review[$i]->average_rating;
..
?>
<div><?php echo $reviewer_name; ?></div>
...
<?php ;} ?>
@第四只鸟通过这个link帮助我:
我为 Trust-A-Trader 评论创建的最终结果,我将其内置到 Joomla!模块 是。我将尝试在 Joomla! 上免费发布该模块!扩展目录 (JED)。
结束代码是
$feed = "http://www.trustatrader.com/api/consumer-reviews/?username=" . $userName . "&format=xml&reviews_per_page=20&page=" . $pageNumber;
$xml = simplexml_load_file($feed);
// Count Reviews, if total number of reviews is less than the total shown on page set in module then show the lesser amount to avoid an error.
$totalNumberOfReviews = count($xml->reviews->review);
$numberOfForLoops = $totalNumberOfReviews;
if ($totalNumberOfReviews > $numberOfReviews) {
$numberOfForLoops = $numberOfReviews;
}
// If the module sets the order to random then shuffle array, or else do in latest first date order.
if ($params->get('Order') == 0) {
foreach($xml->reviews->review as $val)
$array[]= $val;
shuffle($array);
}
// Loop through the reviews and output them.
foreach($array as $val)
{
$i = 0;
if ($i < $numberOfForLoops)
{
?>
<div class="mod_trust_a_trader_reviews--review g-grid" itemscope itemtype="http://schema.org/Review" itemprop="review" >
<div class="review g-block size-100" itemprop="reviewBody">
<?php echo $val->comments; ?>
</div>
<div class="authorBlock g-grid size-100">
<span class="author g-block size-100" itemprop="author">
<?php echo $val->reviewer_name; ?>
</span>
</div>
<div class="score g-block size-100 g-grid">
<div class="g-block size-100">
<?php starRatingImage($val->average_rating); ?>
</div>
<div class="g-block size-100 reviewRating">
<?php echo '(<span itemprop="reviewRating">' . $val->average_rating . '</span>)'; ?>
</div>
</div>
</div>
<?php
}
$i++;
}
?>