如果foreach循环内的条件(scanDirectory函数)


If condition inside a foreach loop (scanDirectory function)

我试图在foreach循环中使用php条件,但遇到了一些困难。我查阅了其他处理该问题的线程,但找不到适用于我的代码的解决方案/解释。这是:

<?php
    $directory = $_SESSION['cwd'];              // current directory
    $user = $_SESSION['simple_auth']['username']; // get username
    $repository = gatorconf::get('repository');   // get base repertory of the file manager
    $userdir = $repository.DS.'user'.DS.$user;   // user's repertory
function scanDirectory($userdir = ''){
    $folders = glob($userdir . '/*' , GLOB_ONLYDIR);
    foreach($folders as $folder){
        echo "$folder<br />";      // line where i tried different things for my condition
        scanDirectory($folder);
    }
}
scanDirectory($userdir);
?>

我试图用一个条件替换echo "$folder<br />";行,这样在返回循环之前,变量$folder将与另一个变量进行比较,而不是被回显,如下所示:

if ($folder == $directory) {
    echo "you have permissions on this folder";
}

基本上,我的代码的目的是将特定的库与用户当前所在的库进行比较,如果匹配,则会显示一些html,但我认为我没有正确的方法。

欢迎提出任何建议!

感谢的帮助

将当前目录作为函数的参数,并在遍历所有文件夹时传递它。

<?php
$directory = $_SESSION['cwd'];              // current directory
$user = $_SESSION['simple_auth']['username']; // get username
$repository = gatorconf::get('repository');   // get base repertory of the file manager
$userdir = $repository.DS.'user'.DS.$user;   // user's repertory
function scanDirectory($userdir = '', $directory){
  $folders = glob($userdir . '/*' , GLOB_ONLYDIR);
  foreach($folders as $folder){
      if ($folder == $directory) {
          echo "you have permissions on this folder";
      }
      scanDirectory($folder, $directory);
  }
}
scanDirectory($userdir, $directory);
?>