2

私はうまく機能するこのコードを持っています:

function random_pic($dir = 'img')
{
    $files = glob($dir . '/*.png');
    $file = array_rand($files);             
}

ディレクトリからランダムな画像を取得します。私は後でこれを持っています:

<img src="<?php echo random_pic(); ?>"/>
<img src="<?php echo random_pic(); ?>"/>

両方が同じ画像を表示しないようにする方法はありますか?

4

5 に答える 5

5

これを試して:

$indexes=array_rand($files,2);
$file1=$files[$indexes[0]];
$file2=$files[$indexes[1]];

array_rand は複数のキーを取得できます。2 番目のパラメーターとして 2 を指定するだけです。この場合、am 配列を返します。

function random_pics($dir = 'img',$howMany=2) {
    $files = glob($dir . '/*.png');
    if($howMany==0) $howMany=count($files); // make 0 mean all files
    $indexes = array_rand($files,$howMany);
    $out=array();
    if(!is_array($indexes)) $indexes=array($indexes); // cover howMany==1
    foreach($indexes as $index) {
        $out[]=$files[$index];
    }
    return $out;
}

$theFiles=random_pics();


<?php echo $theFiles[0]; ?>
<?php echo $theFiles[1]; ?>
于 2012-11-29T23:09:38.763 に答える
3

最後を思い出せますか。次に、それが使用されているかどうかを確認しますか?もしそうなら、新しいものを入手してください。

$one = random_pic();
$two = random_pic();
while($one == $two){
$two = random_pic();
}

そしてマークアップで。

<img src="<?php echo $one; ?>"/>
<img src="<?php echo $two; ?>"/>
于 2012-11-29T23:00:34.460 に答える
0
function random_pic($dir_only_imgs, $num) {

    shuffle($dir_only_imgs);
    $imgs = array();
    for ($i = 0; $i < $num; $i++) {
        $imgs[] = $dir[$i];
    }
    return $num == 1 ? $imgs[0] : $imgs;
}

$dir = "img"
$dir_only_imgs = glob($dir . '/*.png');

print_r(random_pic($dir_only_imgs, 2));
于 2012-11-29T23:08:40.607 に答える
0

random_pic 関数を順番に呼び出すと思うので、選択した pic を返すだけで、関数の 2 回目の呼び出しにパラメーターとして渡すことができます。次に、転送された写真が選択されないように機能を変更します。

于 2012-11-29T23:03:16.470 に答える