文章中的图片上需要加个水印,由于涉及过往的图片,所以需要批量加水印,这时候需要遍历目录,查看每个目录下有哪些图片,所以写了一个方法去遍历,控制器中这样写的:
/*
* @function waterImg
* @intro 遍历文件夹中的图片
*/
public function waterImg(){
$list = getDirFileList(ROOT_PATH . 'uploads');
if(count($list) > 0){
foreach($list as $r){
if(is_array($r) > 0){
foreach($r as $t){
waterImg($t);//加水印的方法
}
}
}
}
}
全局方法中,这样写的:
/**
* 遍历目录
* @param $path
* @return array 目录名称
*/
function getDirFileList($dir){
$dir = DS == '/' ? str_replace('\\', DS, $dir) : str_replace('/', DS, $dir);//这行是因为本地和服务器环境不一致,所以需要转换一下斜杠(“/”或“\”)
$fileList = [];
$files = scandir($dir);
foreach ($files as $file) {
if ($file != "." && $file != ".." && $file != 'favicon') {
$path = $dir.DS.$file;
if (is_dir($path) && $file != "." && $file != ".." && $file != 'favicon') {
$fileList[] = getDirFileList($path);
} else if ($file != "." && $file != ".." && $file != 'favicon') {
$fileList[] = $path;
}
}
}
return $fileList;
}
这个方法返回的是二维数组,直接遍历即可。