2012-04-18 5 views
0

私は、訪問者数に応じて画像をエコーするウェブページを作ろうとしています。私がこれまでに行ったコードでは、ページへの訪問数をカウントし、その数値を変数$countに格納しています。私はページに$imageのランダムなイメージをエコーし​​ます。今度は、ページに表示されたランダムな画像に、訪問数$countを掛けたいと考えています。そのため、20回の訪問があった場合、20枚のランダムな画像がページにエコーされます。どのようにこれを行うにはどのようなアイデア?ここでイメージを何回もエコーしますか?

は、これまでの私のコードです:

$fp = fopen("count.txt", "r"); 
$count = fread($fp, 1024); 
fclose($fp); 
$count = $count + 1; 

$random = rand(0, 30); 

$image = "<img src='" . $random . ".jpg'/>"; 

echo $image; 

$fp = fopen("count.txt", "w"); 

fwrite($fp, $count); 
fclose($fp); 

すべてのヘルプははるかに高く評価されます。 感謝:)として

+0

宿題のように見えます。閉鎖に投票する –

答えて

0

としてシンプル:

for($i=0;$i<$count;$i++) { 
    $random = rand(0, 30); 
    echo '<img src="'. $random . '.jpg"/>'; 
} 
+0

それはどちらも動作しません。 –

+0

何か不足していますか?これはどのように機能しませんか? – Brad

+0

私の答えで私の説明を見てください。毎回同じ画像が表示されます。 –

0
for ($i = 1; $i <= $count; $i++) 
{ 
    $random = rand(0, 30); 

    $image = "<img src='" . $random . ".jpg'/>"; 

    echo $image; 
} 
0
for($i=1;$i<=$count;$i++) { 
    $random = rand(0, 30); 
    $image = "<img src='" . $random . ".jpg'/>"; 
    echo $image; 
} 
0

$countは、訪問数です。

$count = 20; // I suppose that there are 20 visitors 
for($i = 0; $i < $count; $i++) { 
    $random = rand(0, 30); 
    $image = "<img src='" . $random . ".jpg'/>"; 
    echo $image; 
} 

イメージを出力し、ループ内で乱数を定義します。

0

古いファイル操作のものは使用しないでください。

$count = file_get_contents("count.txt") + 1; 

$a = array(); 

for($i = 0; $i < $count; $i++) { 

    $random = rand(0, 30); 

    while (in_array($random, $a) && count($a) <= 30) { 
     $random = rand(0, 30); 
    } 

    array_push($a, $random); 

    $image = "<img src='" . $random . ".jpg'/>"; 

    echo $image; 

} 

file_put_contents("count.txt", $count); 
1

これは、あなたが探しているものを提供するはずです。

for($i = 0; $i < $count; $i++) { 
    $random = rand(0, 30); 
    $image = "<img src='" . $random . ".jpg'/>"; 
    echo $image; 
} 

あなたがそうでなければ、同じ画像を複数回繰り返し得るでしょう、ループを乱数を毎回再生成する必要があります。今、ユニークなランダムな画像を確実に得たい場合は、もう少し複雑です!

- ユニークなランダムな画像を取得するには

を編集し、私は一般的に使用されてきた方法は、各時間をループ内の配列にそれぞれランダムなIDを追加し、ことを確認することです。 - あなたが使用中のランダムな範囲を超える数を持っている場合、あなたは無限ループをヒットするつもりだ

while(in_array($random, $random_used)) { 
    $random = rand(0, 30); 
} 
$random_used[] = $random; 

この制限について明確にすること:この(ちょうど$random = rand(0,30);行の後に挿入された)のようなものここに。ちょうどPHPの通知を停止するには...

$random_used = array(); 

:また、次のような、(あなたのforループの外で)配列を初期化する必要があります。

おそらくこれを行う簡単な方法がありますが、これは私が一般的に使用した方法です。もし上記のユニークな画像を取得します使用

+0

あなたの答え、非常に有用なありがとう:ありがとうございます、ユニークなランダムイメージを取得する最良の方法は何でしょうか? –

+0

私はこれに対応する答えを広げました。 –

+0

スティーブンさん、ありがとうございます。 –

0
<?php 
$images = range(0, 12); 
for($i = 0; $i < $count; $i++) { 
    // you shoulod check whether count is not above the number of available images 
    $image = array_rand($images, 1); 

    echo "<img src='" . $images[$image] . ".jpg'/>"; 

    unset($images); 
} 

のみ

関連する問題