2011-10-03 42 views
2

的解釋我剛剛開始通過「Concepts,Techniques and Codes」一書在PHP中練習OOP。不幸的我從來沒有與目錄和文件在PHP和感覺難度合作,瞭解這裏這種情況是完整的代碼

function DirectoryItems($directory){ 
    $d = ""; 
    if(is_dir($directory)){ 
    $d = opendir($directory) or die("Couldn't open directory."); 
    while(false !== ($f=readdir($d))){ 
     if(is_file("$directory/$f")){ 
     $this->filearray[] = $f; 
} 
} 
closedir($d); 
}else{ 
//error 
die("Must pass in a directory."); 
} 
} 

所有我能理解首先我們檢查是目錄中的參數後,我們打開一個目錄比我們讀取目錄和推杆目錄中的所有文件到一個數組,但條件是困惑我到底是什麼!==我只知道!=

這本書是寫在PHP4和5 BTW

回答

4

!==就像!=,但除了檢查相等性之外,它還檢查類型。

這是一個重要的區別,因爲有時候某些東西是「假的」或「真實的」,但不是真正的值爲假或真的布爾類型。例如,數字0通常被視爲假。

第二個稍微混淆的部分是代碼在while循環中檢查false !== (assignment)。這基本上是檢查賦值是否爲有效值。

所以到了它一起代碼:

while(false !== ($f=readdir($d)) 

...轉化爲類似:

雖然$f分配從readdir($d)對象做...

1

===意思是「等值和相等型」
!==表示「不等於或不等於類型」

使用==,且空字符串等於false。雖然使用===,但它們並不相同,因爲類型不同。

!=!==以同樣的方式工作。額外的=符號意味着應該檢查類型,而不僅僅是等價值。

+0

所以在這種情況下我們確保值和文件類型是相等的,這意味着我們將具有類似類型的文件放入數組中? –

+1

這裏的關鍵字是類型強制。 – mowwwalker

0

==會將值強制爲相同類型以進行比較。如果readdir返回0,那麼False==0可能會評估爲true。但是,False===0不會成立。

有很多人知道更多關於比較運算符,類型強制,值類型等。我會在他們回答時刪除它。