2011-03-29 91 views
3

所以我對面的這個代碼塊從指定的文件夾拉圖像,並與img標籤。OUPUTS他們來了問題與圖像的排序有關。PHP在數字和字母順序排序

所以,讓我的 「圖片」 文件夾中說,我有這些圖片:

2.JPG B.JPG A.JPG 1.JPG

我怎樣才能讓這個它以數字和字母順序列出圖像?我想編號的圖像是第一位的,然後,按字母順序,所以它會列出相似圖片:

1.JPG 2.JPG A.JPG B.JPG

有什麼想法就這樣做與我有的代碼?

感謝您的幫助!

回答

4

你需要的是一種自然語言排序。

使用PHP函數natsort().. 這裏..

<?php 
$url = "./images/"; 
$temp_files = scandir($url); 
natsort($temp_files); 
foreach($temp_files as $file) 
{ 
    if($file != "." && $file != ".." && $file != basename(__FILE__)) 
    { 
     echo '<a href="'.$url.$file.'" class="lightbox" title="'.$file.'"><img src="'.$url.$file.'" alt="" /></a><br />'; 
    } 
} 
?> 
+1

這工作很好,謝謝你!甚至不知道這個功能存在 – 2011-03-29 21:34:52

+0

偉大的解決方案! – 2012-08-07 14:19:26

+0

如果我想換個角度呢?第一個字母,然後數字? – 2012-08-07 14:23:13

0

您可以將鏈接添加到數組中,而不是立即回顯它們。然後使用sort($array)以正確的順序放置它們,並通過遍歷每個foreach循環來回顯它們,如:foreach($array as $image) { echo ... }

欲瞭解更多信息,請參見:http://php.net/manual/en/function.sort.php

+0

偉大的思想認爲alike..was剛打字:) :) – zamN 2011-03-29 21:07:49

+0

哈哈。 :) – tvkanters 2011-03-29 21:09:02

+2

此外,要添加到原始文章,你可能想要檢查出php.net當你想要做排序的東西。如果你在來這裏之前這樣做了,你可能不需要問這個問題。 – zamN 2011-03-29 21:11:48

0

我將存儲陣列中的文件名,然後用sort()訂購陣列。有沒有更簡單的方法來做到這一點,因爲reddir只返回像這樣的文件名:

文件名按文件系統存儲的順序返回。

0

scandir()glob()功能可以排序的目錄內容都返回陣列,也可以繼續使用opendir/readdir()手動構建陣列。

如果排序順序(或缺少排序順序)不是您喜歡的,那麼您可以使用任何array sorting functions來操縱順序,無論您喜歡。我傾向於喜歡natcasesort()

1

<?php 
    $url = "./test/"; 
    $exclude = array('.', '..'); 
    $files = array_diff(scandir($url), $exclude); 
    natsort($files); 
    print_r(array_values($files)); 
?> 

輸出:

Array 
(
    [0] => 1.jpg 
    [1] => 2.jpg 
    [2] => a.jpg 
    [3] => b.jpg 
)