2011-03-21 52 views
0

所以我在讀這本書的面向對象編程的PHP,並以實例方法在這裏筆者是檢查數據類型我碰到這個功能來:任何人都可以向我解釋這preg_match()函數做什麼?

//class AddressManager... 
function outputAddresses($resolve) { 
    if (is_string($resolve)) { 
    $resolve = 
     (preg_match("/false|no|off/i", $resolve))? 
     false:true; 
    } 
    // ... 
} 

誰能告訴我它的目的是什麼?屬性並不重要,但它是一種將字符串轉換爲布爾值的方法(我認爲)。

回答

0

如果變量$ resolve以不敏感的方式(忽略大小寫)包含「false」或「no」或「off」,則返回FALSE。否則返回TRUE。

看起來像一個簡單的用戶輸入檢查器(而不是一個很好的)。例如,如果輸入「nothing」或「now」,會發生什麼情況?

+0

好點你那裏,但物業$決心從使用的SimpleXML API的XML設置文件拍攝,所以我猜這個屬性已經預定,不需要那麼多的錯誤捕獲,感謝雖然儘快回覆!在洗澡的時間裏有很多回復,我非常喜歡這個網站! – Cazman182 2011-03-21 19:32:51

2

preg_match本身並不將字符串轉換爲布爾值,它是一個正則表達式匹配函數。你在那裏有一個三元表達式,其中有相當多的評估如下:

class AddressManager 
... 
    function outputAddresses($resolve) 
    { 
    if (is_string($resolve)) 
    { 
     if (preg_match("/false|no|off/i", $resolve)) 
     { 
     $resolve = false; 
     } else { 
     $resolve = true; 
     } 
     // $resolve = (preg_match("/false|no|off/i", $resolve))? false:true; 
    } 
// ... 
} 
0

上述的僞代碼。

if($resolve equals false or no or off) 
then 
    set $resolve as false 
else 
    set $resolve as true 

The? (三元運算符)只是替換上面的代碼行。這是幕後發生的事情。

http://en.wikipedia.org/wiki/Ternary_operation

相關問題