2012-11-29 147 views
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(); ?>"/> 

任何方式,我可以做到這一點,他們都不顯示相同的圖片?

回答

5

試試這個:

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

array_rand可以獲取更多然後一個鍵,只需指定2作爲第二個參數。在這種情況下,它返回數組。

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]; ?> 
+0

不知道那個,但它是我對這個問題的兩個解決方案之一。 –

+0

非常甜蜜的回答 –

3

你還記得最後一個。然後檢查它是否被使用?如果是,獲得一個新的。

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

並在標記中。

<img src="<?php echo $one; ?>"/> 
<img src="<?php echo $two; ?>"/> 
0

我想你會打電話給random_pic順序的功能,讓你可以作爲參數返回所選擇的知情同意,並把它送給你的函數的第二個電話。然後以這種方式改變功能,即未選擇轉發的圖片。

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)); 
0

最簡單的方法是這樣的:

<img src="https://www.example.com/images/image-<?php echo rand(1,7); ?>.jpg"> 

爲了得到這個工作,你會希望把你的圖片:圖片-1.JPG,圖像2.JPG,圖像-3.jpg ,,, image-7.jpg,

當頁面加載時,PHP rand()會回顯一個隨機數(在這種情況下是1到7之間的數字),完成URL並因此顯示相應的圖像。 來源:https://jonbellah.com/load-random-images-with-php/