2010-09-20 60 views
2

我有一個Javascript對象是這樣的:如何使用PHP返回目錄中的圖像數量?

var count = { 
      table:19, 
      people:39, 
      places_details:84, 
      story_1:18, 
      story_2:6, 
      story_3:11 
      } 

每個項目(表,人等)是一個目錄內的站點根graphics/目錄。我想通過計算相應目錄中的JPG圖像來使用PHP來提供數值。我想是這樣的:

ar count = { 
      table: <?php count(dir("table")) ?>, 
      people: <?php count(dir("people")) ?>, 
      places_details: <?php count(dir("places_details")) ?>, 
      story_1: <?php count(dir("story_1")) ?>, 
      story_2: <?php count(dir("story_2")) ?>, 
      story_3:<?php count(dir("story_3")) ?> 
      } 

但需要過濾的JPG,並返回一個數字。什麼是正確的代碼?

回答

11

如果你想指望在一個目錄中的JPG圖片的數量,你可以這樣做:

count(glob("dir/*.jpg")); 

glob函數返回一個包含匹配的文件的數組,然後我們使用計數陣列上。

+0

這很酷。我以前從來沒有聽說過這個功能,所以我在下面做了自己的風格秀,但我會認爲你的回答更加簡潔。所以+1先生。 – 2010-09-20 05:37:15

+0

'<?php count(glob(「table/*。jpg」)); ?>'什麼都不返回。 '<?php echo count(glob(「table/*。jpg」)); ?>儘管目錄中有19個圖像,但返回0。我錯過了什麼? – 2010-09-20 05:38:31

+1

您是否使用了正確的路徑,即與您的PHP腳本位於同一目錄中的'table'目錄?否則,你可以嘗試一個絕對路徑,比如'$ _SERVER ['DOCUMENT_ROOT']。 「/圖形/表/ *。jpg''。 – casablanca 2010-09-20 05:40:28

1

您可以簡單地使用glob()函數檢索以.jpg結尾的所有文件名並對它們進行計數。

如果你想確保這些都是真正的JPEG文件,你必須檢查它們。 G。與finfo_file()

+0

用於檢查文件的+1真的是你想要的finfo_file。 – 2010-09-20 05:37:41

0
function get_dir_structure($path, $recursive = TRUE, $ext = NULL) 
{ 
    $return = NULL; 
    if (!is_dir($path)) 
    { 
     trigger_error('$path is not a directory!', E_USER_WARNING); 
     return FALSE; 
    } 
    if ($handle = opendir($path)) 
    { 
     while (FALSE !== ($item = readdir($handle))) 
     { 
      if ($item != '.' && $item != '..') 
      { 
       if (is_dir($path . $item)) 
       { 
        if ($recursive) 
        { 
         $return[$item] = get_dir_structure($path . $item . '/', $recursive, $ext); 
        } 
        else 
        { 
         $return[$item] = array(); 
        } 
       } 
       else 
       { 
        if ($ext != null && strrpos($item, $ext) !== FALSE) 
        { 
         $return[] = $item; 
        } 
       } 
      } 
     } 
     closedir($handle); 
    } 
    return $return; 
} 

使用該函數來做到這一點:

ar count = { 
    table: <?php echo count(get_dir_structure("./graphics/table/", FALSE, '.jpg')) ?>, 
    people: <?php echo count(get_dir_structure("./graphics/people/", FALSE, '.jpg')) ?>, 
    places_details: <?php echo count(get_dir_structure("./graphics/places_details/", FALSE, '.jpg')) ?>, 
    story_1: <?php echo count(get_dir_structure("./graphics/story_1/", FALSE, '.jpg')) ?>, 
    story_2: <?php echo count(get_dir_structure("./graphics/story_2/", FALSE, '.jpg')) ?>, 
    story_3: <?php echo count(get_dir_structure("./graphics/story_3/", FALSE, '.jpg')) ?> 
}