2011-06-03 83 views
3

我查了手冊中的函數,但是我仍然沒有得到這個。根據編寫代碼的人,如果用戶輸入「y」,則執行此功能(此處未顯示)。但是,由於!,在我看來,如果用戶輸入的內容不是「y」,函數(此處未顯示)會執行。請解釋這個PHP語法

請解釋(我「馬相對新手,所以儘可能多的細節可能會有所幫助)。感謝

if(!strncasecmp(trim(fgets(STDIN)),'y',1)) 
+0

這是一個命令行應用程序的情況下? – 2011-06-03 09:05:16

+0

是的,腳本正在創建一個shell工具 – Leahcim 2011-06-03 09:07:19

回答

10

fgets(STDIN) - 從標準輸入(鍵盤,你的情況)的字符串

trim。 - 刪除用戶輸入周圍的空間。因此,如果用戶輸入' y''y ',它會被轉換爲'y'

strncasecmp - 用戶可以輸入大寫Y或小寫y,此功能可幫助您區分大小寫的方式進行比較。如果比較成功,則此函數返回0,然後使用!(非運算符)將0更改爲1,以便if測試通過。

您可以將其重新寫爲:

if(strncasecmp(trim(fgets(STDIN)),'y',1) == 0) 
4

功能strncasecmp返回0,如果有沒有區別的字符串之間相比,因此, !,以檢查他們是否等於

+3

是的。許多字符串比較函數在各種語言/庫中都會返回像這樣的字符串用於排序目的 - 如果字符串比比較字符串「小於」,則爲負值;如果比比較字符串「多」則爲正值,如果相等則爲零。 – 2011-06-03 09:07:06

+0

由於「0」評估爲「假」...... – 2011-06-03 09:07:12