0

配列からランダムなバナーを表示する関数があります:

//func.php
function rand_rek($rek_array){
$numberOfBanners = count($rek_array);
$numberOfBanners = $numberOfBanners - 1;
$randomBanner = rand(0,$numberOfBanners);
$rek = $rek_array[$randomBanner];
return $rek;
}

$reklamas3 つのバナーを含む配列があります。

//ads.php
$reklamas = array($rek1, $rek2, $rek3);

$_GET["noa"] が true でない場合、$reklamas 配列にさらにバナーを追加します。

if (!isset($_GET["noa"]))
array_push($reklamas, $rek_adc1, $rek_adc2, $rek_adc3, $rek_adc4);

そして、ランダムなバナーの1つをx回表示したい:

for ($i=0;$i<$banneri;$i++) {
    echo rand_rek($reklamas);
    }

array($rek1, $rek2, $rek3);問題:これらは何度でも繰り返すことがarray_push($reklamas, $rek_adc1, $rek_adc2, $rek_adc3, $rek_adc4);できますが、それぞれ 1 回しか表示できません。

関数 rand_rek() は func.php にあり、残りのコードである ads.php からインクルードされています。

4

1 に答える 1

0

おそらく問題についてすべて間違っていると思いますが、いずれにせよ解決策は

function rand_rek($rek_array){
    $numberOfBanners = count($rek_array);
    $numberOfBanners = $numberOfBanners - 1;
    $randomBanner = rand(0,$numberOfBanners);
    $rek = $rek_array[$randomBanner];
    return [$randomBanner, $rek];
}

list($bannerNum, $banner) = rand_rek($reklamas);
if ($bannerNum < 3) {
    $repeats = $x;
} else {
    $repeats = 1;
}

for ($i=0;$i<$repeats;$i++) {
    echo $banner;
}

バナーのインデックスを取得し、ループを実行する前にチェックします。$xまた、テキストでは言及しているがコードでは言及していない値を使用しました。

于 2013-03-21T19:56:18.230 に答える