2

我正在尝试使用scandir()and获取匹配的文件数组foreach()

当我运行时scandir(),它会返回所有文件列表。这里没问题。

现在在第二步中,当我执行 foreachscandir()数组时,我只得到一个匹配的文件。但是有两个文件被调用(在执行 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);
4

1 回答 1

2

上面的代码在找到第一个匹配文件后立即调用return,这意味着 foreach 循环在preg_match返回 true 时立即退出。在 foreach 循环退出之前,您不应该返回:

// ...
foreach ($files as $file){      
    if(preg_match('/widget_lc?/', $file)) {
         $template[] = $file;
    }
}
return $template;
// ...
于 2013-05-16T15:49:28.697 回答