到目前为止还没能找到我要找的东西,所以我正在寻求帮助。
我有一个div,需要以1到8之间的数字结尾,我需要它是一个随机数,不重复...
<div class="parallax parallax_<?php echo $random_number ?>"></div>
我认为这应该很简单,但我遇到了麻烦。
目前,我有:
<div class="parallax parallax_<?php echo rand(1, 8); ?>"></div>
有效,但会产生重复。
修改
经过测试,我意识到我遇到了问题。我在wordpress模板中使用它。我正在查询一组6个帖子,对于每组帖子,我都包括上面的视差div。所以,我为每个查询得到一个随机的,没有重复的数字,但每个查询重置数字 - 给我重复...这是我的整个代码。
<?php
$args = array(
'post_type' => 'post',
'orderby' => 'menu_order',
'posts_per_page' => -1,
'order' => 'ASC'
);
$posts = get_posts( $args );
?>
<?php foreach (array_chunk($posts, 6, true) as $posts) : ?>
<div class="parallax parallax_<?php echo rand(1, 8); ?>"></div>
<div class="posts_container">
<?php foreach( $posts as $post ) : setup_postdata($post); ?>
<div class="post">
<div class="post__thumbnail"><a href="<?php the_permalink();?>"><?php the_post_thumbnail(); ?></a></div>
<div class="post__title"><?php the_title(); ?></div>
</div>
<?php endforeach; ?>
</div>
<?php endforeach; ?>
答案 0 :(得分:4)
此代码可防止重复并适用于任何其他测试用例场景。不需要随机播放,随机元素基于array_rand()
函数。
要重复选择新的随机密钥,必须在循环中使用代码。
// Array declaration
$a=array(1,2,3,4,5,6,7,8);
// Loop
$randomKey=array_rand($a);
unset($a[$randomKey]);
// Test
echo $randomKey."<br>";
var_dump($a);
首先,它定义了一个所需的数字数组。比挑选数组中的随机密钥。它也没有从数组中取消,因此不会再使用它。
重复操作$randomKey
和unset()
应该循环播放。 Echo和var_dump()
功能仅用于测试目的。数组大小可以减少未设置的已使用键或保持相同的长度,从循环中留下unset()
函数。
答案 1 :(得分:2)
我会做range
和shuffle
:
$myRange = range(1, 8);
shuffle($myRange);
return $myRange[0];
答案 2 :(得分:0)
您可以使用uniqid()
功能和md5
来强化结果:
md5(uniqid(rand(1, 8), true));
或使用shuffle。
$numbers = range(1, 8);
shuffle($numbers);
foreach ($numbers as $number) {
echo "$number ";
}
答案 3 :(得分:0)
我认为这可以帮到你。
shuffle()
here
<?php
$numbers = range(1, 8);
shuffle($numbers);
foreach ($numbers as $number) {
echo "$number ";
}