2013-05-16 99 views
2

我試圖使用scandir()foreach()來獲得匹配的文件數組。php - scandir和返回匹配的文件

當我運行scandir()然後它返回所有文件列表。它的okey在這裏。

現在在第二步,當我做foreach scandir() s數組,然後我只得到一個匹配的文件。但有兩個文件調用(請注意在做foreach之前我的scandir()返回包含這兩個文件的所有文件);

widget_lc_todo.php 
widget_lc_notes.php 

的東西是在我的代碼丟失,我不知道什麼:-(

這裏是我的代碼:

$path = get_template_directory().'/templates'; 
$files = scandir($path); 
print_r($files); 
$template = array(); 
foreach ($files as $file){  
    if(preg_match('/widget_lc?/', $file)): 
     $template[] = $file; 
     return $template; 

    endif; 
} 
print_r($template); 
+3

您在找到第一個匹配的文件後立即調用'return'。 – Andrew

+0

我真是個大笨蛋,謝謝你,你是個石頭 – user007

+0

有時候我們只需要在代碼上加一雙眼睛:) – Andrew

回答

2

你上面的代碼,一旦調用return,因爲它找到的第一個匹配文件,這意味着只要preg_match返回true就退出foreach循環,直到foreach循環退出後才能返回:

// ... 
foreach ($files as $file){  
    if(preg_match('/widget_lc?/', $file)) { 
     $template[] = $file; 
    } 
} 
return $template; 
// ...