2015-06-08 18 views
1

我想用PHP計算不同文件夾中文件的數量。該文件夾的名稱是從1到26開頭的數字。 我已經使用了iterator_count()PHP函數來完成該操作。這就是我寫:當我在PHP中使用「DirectoryIterator」時虛構的文件夾?

$noCoords = array(); 
for ($number = 1; $number <= 26; $number++) { 
    $x = iterator_count(new DirectoryIterator('/Images/'.$number.'/file')); 
    $noCoords[$number] = $x-2; // removing . and .. files 
    array_push($noCoords,$x); 
} 

$noCoords=json_encode($noCoords); 
echo($noCoords); 

在我的web應用程序使用JavaScript來提醒返回的JSON:

var noCoordsImages = function(){  
     $.get('requestsII/count_noCoords_images.php', function(data) { 
      alert(data); 
     }); 
    } 

在這裏,我得到的問題。我沒有得到一個帶有26個輸出(每個文件夾一個)的json的警告框,而是獲得了27個。它甚至爲第27個文件夾分配了一個值。在我的目錄中沒有名稱爲「27」的文件夾。 任何想法爲什麼發生這種情況?

+0

你'array_push()'總是添加在您通過一把鑰匙什麼的頂部一個額外的記錄,想這是你忘了刪除你當行添加了「$ x-2」變體。 – Blizz

回答

2

讓我這句話作爲回答:

每次迭代你實際上是添加一個額外的記錄到數組因爲array_push()

隨着$noCoords[$number] = $x-2你會通過26和行添加索引1您創建$number + 1

所以會發生什麼額外的輸入後(假設你的文件夾25和26分別有100和90個文件):

$指數= 25:

​​

$指數= 26:

$noCoords[26] = 88; // $noCoords[$number] = $x-2 
$noCoords[27] = 90; // array_push($noCoords,$x); 
+0

謝謝。多麼愚蠢的錯誤! – user1919

相關問題