如果变量等于变量变化一个变量

问题描述:

我想知道如何让它变成3个变量从来没有使用rand()相同的数字?如果变量等于变量变化一个变量

<?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个不同的产品?注意:我将添加更多项目到数组中,这只是一个测试脚本,直到我找出来。

+1

退房['link'](http://*.com/questions/16184116/random-show-20-of-60-php/16184189#16184189)和'列表()'施工。或['shuffle()'](http://php.net/manual/en/function.shuffle.php)。 – BlitZ 2013-04-26 08:21:33

+0

嗯,我真的不明白它。 我的代码工作,如果我删除所有的if语句。 唯一的问题是有时候2个显示的项目将是相同的。 是否没有可能说这个变量是否等于这个变量减去或添加这个? – VampireNews 2013-04-26 08:25:36

+0

你的代码的主要问题是,有时(实际上,像2比3的机会)你会从1中扣除1,这将意味着0,并且$ myAd [0]中没有任何内容。所以它会出错。 – 2013-04-26 08:40:22

尝试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; 
} 
?> 
+0

但是如果我在数组中有50个项目不会回显所有50个项目? – VampireNews 2013-04-26 08:27:19

+0

@VampireNews然后,'array_slice()'帮助。 – BlitZ 2013-04-26 08:29:48

+0

现在就像一个魅力。谢谢。 – VampireNews 2013-04-26 08:35:15

$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()

实例如何比较两个,但可以改善的基本需要最

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

首先,你需要把你的随机变量,一个变量,然后执行,而其中,随机1等于随机2,你可以从你需要的方面做得更复杂。

GBU

+0

当然,当数字取代广告的范围时,需要进行健全性检查以确保实际上有足够的广告,否则会出现无限循环。 – 2013-04-26 08:42:45

+0

感谢@PaulGregory的解释虽然它是一个简单的解释:) – 2013-04-26 08:44:13