2013-08-23 27 views
0

我已經在php中爲自己編寫了一個圖像庫。在php中隨機選擇20個文件夾中的50個,然後枚舉每個縮略圖中的(thumbs)文件夾

我使用'foreach'循環顯示文件夾並在主頁上顯示縮略圖。

我只想在主頁上返回20個畫廊(以及縮略圖) - 但我希望這20個是完全隨機的。

所以 - 我知道我需要先將我的圖庫文件夾名稱讀入數組,然後從此數組中隨機選擇20個文件夾。我該怎麼做?我的代碼

部分目前看起來是這樣的:

$i = 0; 
foreach(glob($galdir.'*', GLOB_ONLYDIR) as $dir) { 
    $thumbdir = ($dir . "/thumbs/"); 

    echo "<div class=\"picture titleleft\">\n"; 
    // echo "<div class=\"picture titleleft\" style=\"width:175px;\">\n"; 
    echo '<a href="showgal.php?gallery='. $dir . '"> 
    <img src="'.random_pic($thumbdir).'" alt="mypicturedlife gallery image" height="112px"></a>' . "\n"; 
    $galname = str_replace(array("galleries/"), "", $dir); 
    $galleryname = str_replace(array("_"), " ", $galname); 
    echo "$galleryname\n"; 
    echo "</div><!-- close picture titleleft -->\n"; 
    if (++$i == 20) break; 
} 

你會看到我有$ i = 0的循環,然後在循環中的counf OT 20休息之前。

這工作正常 - 但當然只返回前20個畫廊,而不是隨機的。

謝謝。

+0

可能會更好,首先讓你的文件夾到數組變量? –

回答

1

像你說的東西,把所有的文件夾到一個數組:

$dirs = glob($galdir . '*', GLOB_ONLYDIR); 

然後隨機在數組中的元素與shuffle()的順序:

shuffle($dirs); 

然後選擇/提取該數組的第一個20與array_slice()

$dirs = array_slice($dirs, 0, 20); 

然後輸出這個目錄/畫廊到您的主頁就像你與你的foreach那樣:

foreach($dirs as $dir) { 
    echo 
     '<div class="picture titleleft">' . 
      '<a href="showgal.php?gallery=' . $dir . '"> 
       <img src="' . random_pic($dir . '/thumbs/') . '" alt="..." />' . 
      '</a>' . 
      str_replace(array("galleries/", "_"), array("", " "), $dir) . 
     '</div>'; 
} 
0

首先,將所有圖庫保存在一個數組中。

$storage = glob($galdir . '*', GLOB_ONLYDIR); 

現在,洗牌陣列。

shuffle($storage); 

你現在有一個數組,你的所有畫廊隨機排序。再次循環他們。

for($i = 0; $i < 20; $i++) { //Only 20 
    echo $storage[$i]; //Directory name. Add your HTML stuff here 
} 
+0

如果您的文件夾少於20個,則會發生錯誤。如果你把'min()'放在'for'循環中,就可以很容易地修復它,就像'for($ i = 0; $ i

0
+0

I已經看過這個頁面,但是我不知道如何使用這個函數,因爲編程不是我的主要技能之一! – Tony

+0

該函數返回給定數組中的隨機鍵,然後您必須遍歷這些鍵並通過當前鍵從主數組中選擇數據。 –

相關問題