rand()在Archives上重复

时间:2017-05-25 13:26:39

标签: php random

我正在使用它来选择存档上的随机图像,但是在每个分页存档页面上使用相同的图像2或3次。

任何方式确保它只选择一个独特的图像?

$random_image = sprintf( '%s/random/%s.png', get_stylesheet_directory_uri(), rand( 6, 1 ) );

编辑:我想我需要使用$ wp_query-> current_post来定位循环中的6个最新帖子,并为每个帖子设置一个特定的默认图像。大量的PHP但可以工作。

2 个答案:

答案 0 :(得分:1)

要获得一个非常随机的图像,同时避免连续重复,您可以创建一个静态数组,随机播放其元素n次并返回pop-uped值:

function getRandom() {
  static $arr = array();
  if (empty($arr)) {
    $arr = range(1,6);
    $count = mt_rand(1,10);
    for ($i=0; $i<$count; $i++)
      shuffle($arr);
  }
  return array_pop($arr);
}

$random_image = sprintf('%s/random/%s.png', get_stylesheet_directory_uri(), getRandom());

答案 1 :(得分:0)

你的代码每次传递给它时都是随机生成的,因此随机数会改变为几次复制一个值。

您可以随机设置所有值。

$a = range(1,6); # total number of images
shuffle($a); # randomize

print_r($a);

并返回数组中的值。

我认为这有帮助。 :)