为什么我没有在recursiveDirectoryItorator中访问值的范围?

时间:2013-04-01 06:48:39

标签: php iterator scope

我正在玩PHP RecursiveDirectoryItorator,但是我发现由于某些原因,我的一些变量超出了范围,因为它们应该在范围内......除非我真的错过了什么。我试图访问的两个变量是$ master_array和$ current,如果我在我的else语句中回显或print_r它们,则两者都没有任何值。这是我的代码:

$master_array = array(); 

$startpath = "some file path"; // i'm using a real file path in my code. 
$ritit = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($startpath), RecursiveIteratorIterator::CHILD_FIRST); 

foreach($ritit as $fileinfo) {
    echo "<pre>"; 
    $current = ''; 
    if(!$fileinfo->isFile()) {

        if(strip_replace($fileinfo->getFilename()) == strip_replace('some  - title')) {
            $master_array[$fileinfo->getFilename()]  = $fileinfo->getPathname(); 
            $current = $fileinfo->getFilename(); 
        } 

    } else {

        if(!empty($current) && in_array($current, split_file_path_into_array($fileinfo->getPathname()))) {
            echo $fileinfo->getFilename()."\n"; 
            echo $fileinfo->getPathname()."\n"; 
        } 
        echo $current; // i don't have access to this
        print_r($master_array); // and i don't have access to this.  

        }
    }   

对此的任何帮助将不胜感激。我希望我只是忽略了一些简单的东西,但是我一直在看这段代码,并且在相当长的一段时间内搞乱它,似乎无法让它发挥作用。

1 个答案:

答案 0 :(得分:1)

$current应该是数组而不是字符串

$current = array();

并且$current将始终为空,因为您在其他内部调用它并在if's if内分配值。