2017-05-31 52 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