1

我想知道如何使用 rand() 使 3 个变量永远不会具有相同的数字?

<?php
$myAd[1] = '<a href="http://www.pegor.com">Free PHP Tutorials</a>';
$myAd[2] = '<a href="http://www.lifestinks.info">Fast Facebook Proxy</a>';
$myAd[3] = '<a href="http://www.mozilla.org">Fastest and Secure Web Browser</a>';

$adId = rand(1,count($myAd));
$adId2 = rand(1,count($myAd));
$adId3 = rand(1,count($myAd));
if ($adId === $adId2) { $adId = ($adId2 - 1) }
if ($adId === $adId3) { $adId = ($adId3 - 1) }
if ($adId2 === $adId3) { $adId2 = ($adId3 - 1) }

echo $myAd[$adId];
echo '<br>';
echo $myAd[$adId2];
echo '<br>';
echo $myAd[$adId3];
?>

简而言之,我想要完成的是我的网站在左栏中显示 3 种产品。每次用户刷新时,它们都会改变。我一直遇到的问题是随机数生成的两个变量是相同的。我怎样才能到达他们总是以不同的数字登陆的地方,以便一次显示 3 种不同的产品,而不是 2 种相同和 1 种不同的产品?注意:我将向数组中添加更多项目,这只是一个测试脚本,直到我弄清楚为止。

4

3 回答 3

1
$adId = rand(1, count($myAd));
do
    { $adId2 = rand(1, count($myAd)); }
while ($adId2 == $adId);

do
    { $adId3 = rand(1, count($myAd)); }
while ($adId3 == $adId || $adId3 == $adId);

但最好使用shuffle()array_slice()

于 2013-04-26T08:27:25.810 回答
1

尝试shuffle()array_slice()

$myAd = array();
$myAd[1] = '<a href="http://www.pegor.com">Free PHP Tutorials</a>';
$myAd[2] = '<a href="http://www.lifestinks.info">Fast Facebook Proxy</a>';
$myAd[3] = '<a href="http://www.mozilla.org">Fastest and Secure Web Browser</a>';
// more of...

shuffle($myAd);

$myAd = array_slice($myAd, 0, 3);

foreach($myAd as $value){
    echo $value, '<br/>', PHP_EOL;
}
?>
于 2013-04-26T08:24:22.647 回答
0

示例如何比较两个,但您可以改进基本上您最需要的

$rnd1 = rand(0,9);
do {
  $rnd2 = rand(0,9);
} while ($rnd1 == $rnd2);

首先,您需要将随机变量放在一个变量中,然后在随机 1 等于随机 2 的情况下进行操作,您可以根据需要做更复杂的事情。

GBU

于 2013-04-26T08:28:14.910 回答