php - scandir 并返回匹配的文件

标签 php arrays foreach

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

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

现在在第二步中,当我执行 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);

最佳答案

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

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

关于php - scandir 并返回匹配的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16591736/

相关文章:

php - foreach 循环不适用于单个结果

php - 如何选择帖子类型(WordPress)以通过头部过滤器?

php - 违反完整性约束 : 1048 Column 'user_id' cannot be null

arrays - 在 bash 中覆盖二维数组单元格

javascript - 数组中的奇怪行为

javascript - 如何按顺序打印数组中的项目

java - 如果 forEach 是抽象方法,它如何将 lambda 表达式应用于数组?

php - 用户文件上传存储的最佳实践

javascript - 处理 Cookie 的最佳方式

javascript - Ramda 合并两个对象关系设备