2017-05-31 57 views
0

我做添加文件的列表,以数组:文件到阵列 - 水珠VS RecursiveIteratorIterator

$files = glob($path."*.*"); 

我可输出print_r(array_values($array));的阵列。

现在我试图做同样的RecursiveIteratorIterator

$files = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($path) 
); 

这并不工作就像预期的,当我尝试输出数组?

print_r(array_values($files)); 

我怎样才能得到相同的结果?

+1

'$ files'是一个迭代,而不是阵列。 – Barmar

+1

你需要用'foreach'迭代它。 – Barmar

+0

@Barmar请你详细说明一下吗?我很新的编码。 – MikeSkril

回答

1

迭代器与阵列不一样。要使用迭代器,必须用foreach来迭代它。

<?php 
$path = "test.dir"; 
$files = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($path) 
); 
$file_array = array(); 
foreach ($files as $f) { 
    $file_array[] = $f; 
} 
print_r($file_array); 

输出:

Array 
(
    [0] => SplFileInfo Object 
     (
      [pathName:SplFileInfo:private] => test.dir/. 
      [fileName:SplFileInfo:private] => . 
     ) 

    [1] => SplFileInfo Object 
     (
      [pathName:SplFileInfo:private] => test.dir/.. 
      [fileName:SplFileInfo:private] => .. 
     ) 

    [2] => SplFileInfo Object 
     (
      [pathName:SplFileInfo:private] => test.dir/sub1/. 
      [fileName:SplFileInfo:private] => . 
     ) 

    [3] => SplFileInfo Object 
     (
      [pathName:SplFileInfo:private] => test.dir/sub1/.. 
      [fileName:SplFileInfo:private] => .. 
     ) 

    [4] => SplFileInfo Object 
     (
      [pathName:SplFileInfo:private] => test.dir/sub1/filea.jpg 
      [fileName:SplFileInfo:private] => filea.jpg 
     ) 

    [5] => SplFileInfo Object 
     (
      [pathName:SplFileInfo:private] => test.dir/sub1/fileb.jpg 
      [fileName:SplFileInfo:private] => fileb.jpg 
     ) 

    [6] => SplFileInfo Object 
     (
      [pathName:SplFileInfo:private] => test.dir/sub2/. 
      [fileName:SplFileInfo:private] => . 
     ) 

    [7] => SplFileInfo Object 
     (
      [pathName:SplFileInfo:private] => test.dir/sub2/.. 
      [fileName:SplFileInfo:private] => .. 
     ) 

    [8] => SplFileInfo Object 
     (
      [pathName:SplFileInfo:private] => test.dir/sub2/sub21/. 
      [fileName:SplFileInfo:private] => . 
     ) 

    [9] => SplFileInfo Object 
     (
      [pathName:SplFileInfo:private] => test.dir/sub2/sub21/.. 
      [fileName:SplFileInfo:private] => .. 
     ) 

    [10] => SplFileInfo Object 
     (
      [pathName:SplFileInfo:private] => test.dir/sub2/sub21/filee.jpg 
      [fileName:SplFileInfo:private] => filee.jpg 
     ) 

) 
+0

我已经试过了,但是当我做'print_r(array_values($ file_array));'时,数组是空的。 – MikeSkril

+0

我只是试过了,它适用于我。也许你在创建迭代器时没有给出正确的'$ path'。 – Barmar

+0

我想我现在明白了。谢谢您的帮助! – MikeSkril