我如何对数组进行升序而不是随机排序

时间:2015-02-24 16:16:56

标签: php arrays sorting

我在网上找到了这个很棒的代码片段。 它会在刷新页面时随机显示一个新的推荐,我想知道如何以升序显示数组而不是随机显示数组?

$target = sort(0, $num-1); 

^这是我的尝试

<?php
    /*
    --------------------------------------------
    Random Testimonial Generator Created by:
    Ryan McCormick
    Ntech Communications
    Website: http://www.ntechcomm.com/
    Blog: http://www.ntechcomm.com/blog/
    Twitter: @ntechcomm
    --------------------------------------------
    */

    //Start Array
    $testimonials = array();
    $testimonials[0] = "Testimonial 1";
    $testimonials[1] = "Testimonial 2";
    $testimonials[2] = "Testimonial 3";
    $testimonials[3] = "Testimonial 4";
    //Automate script by counting all testimonials
    $num = count($testimonials);
    //randomize target testimonial
    $target = rand(0, $num-1);
    /*
    To display testimonials on site
    --------------------------------------------
    place the following code in the
    display area:
    <?php echo $testimonials[$target]; ?>
    --------------------------------------------
    Use a PHP include to use this code on your
    target page.
    */
    ?>

在页面中输出以下内容的推荐:

<?php echo $testimonials[$target]; ?>

澄清:

我发布的代码在刷新页面时随机显示一个推荐。我希望保留此功能并一次只显示一个,但我希望它们按添加顺序显示。

2 个答案:

答案 0 :(得分:0)

使用升序排序

$testimonials = array();
$testimonials[0] = "Testimonial 1";
$testimonials[1] = "Testimonial 2";
$testimonials[2] = "Testimonial 3";
$testimonials[3] = "Testimonial 4";

$random  = rand(0, count($testimonials) - 1);
$asc_arr = sort($testimonials);
print_r($result);

答案 1 :(得分:0)

您可以使用sort()按升序对数组值进行排序。这是它的文档。

http://php.net/manual/en/function.sort.php

基本上,您可以像这样使用它:

$myarray = array('aa', 'bb', 'abc', 'cde', 'az');
sort($myarray);
var_dump($myarray);

另外(因为&#34;我发布的代码在页面刷新时随机显示一个推荐。我希望它保留此功能并且一次只显示一个但是按顺序显示推荐人的提升情况&#34; OP提出的澄清:

如果您希望每页加载只显示一个推荐,那么您需要在每个页面加载时保留最后一个数组索引。如果只是刷新页面,那么您可以使用会话变量。像这样:

session_start();
if (!isset($_SESSION['cur_index'])) { $_SESSION['cur_index'] = 0; }
$target = $_SESSION['cur_index'];
// Prepare for the next index when the page is refreshed.
$_SESSION['cur_index']++;
// If the index goes pass the array's limit, then go back to index 0.
if ($_SESSION['cur_index'] >= count($testimonials)) {
    $_SESSION['cur_index'] = 0;
}

这会将$ target变量更新为基于上一个索引的下一个索引。