2013-05-16 3 views
2

scandir()foreach()을 사용하여 일치하는 파일 배열을 얻으려고합니다.php - 스캔하여 일치하는 파일을 반환하십시오.

scandir()을 실행하면 모든 파일 목록이 반환됩니다. 여기에 오케이.

두 번째 단계에서 foreach를 수행 할 때 scandir() 배열을 사용하면 일치하는 파일이 하나만 나타납니다. 하지만 두 개의 파일 (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를 호출 이는 foreach 루프가 preg_match이 true를 반환하자마자 종료되므로 foreach 루프가 종료 될 때까지 반환하면 안됩니다.

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