2010-03-16 34 views
1

我有一個函數,檢查傳遞的值,並返回false或true,如果爲false我希望它添加到數組的東西。我寫的代碼如下。在PHP中,我可以檢查函數調用的布爾值嗎?

if(!check_input($_POST['username'])){ 
    $errors[] = "Username"; 
} 

無論如何,它無論如何都會添加到我的數組中,而不管輸入的內容是什麼。我寫過的方法是檢查check_input()返回的錯誤是否正確?我通過改變返回回聲來檢查函數的邏輯,並且它返回正確的值,我只是不確定是否檢查錯誤。

我之前曾嘗試將其編寫爲$X=check_input等,然後是if(check_value == false),但這似乎並沒有給我想要的結果。嗯快速指針請!

編輯:

好了,看着我的功能後,我覺得我看到了這個問題,我有一個if語句,以及一個內部的if else語句中,如果檢查值不爲空第一,秒檢查它是否超過其最大長度並返回真/假。我把它設置爲只檢查最大長度,如果我通過了這個值 - 或者它什麼也不設置。但總的來說,我對主要的if語句沒有回報。所以我的邏輯是目前,如果值大於無,那麼檢查它與最大長度,然後返回true。如果我不檢查最大長度,它確實有價值,它不會返回任何東西。嗯。我在想這是我的問題的原因?

編輯2:

感謝所有,和馬文,誰建議我重新檢查功能。我有它的工作。如果某件事情返回假,如果其他事情返回假,並且我把我的回報從其他語句中刪除,並且嘿!

+0

相等statemnet是正確的,你可以使用這樣的函數。 你的check_input函數應該有問題,如果你想讓它工作,我會嘗試檢查它 – marvin 2010-03-16 13:22:58

+0

,'check_input()'必須返回一個布爾值。 – dnagirl 2010-03-16 13:24:20

回答

1

您需要使用===運營商false該函數的返回值進行比較:

if(check_input($_POST['username']) === false) { 

但如果你確信該函數返回唯一boolean值你這樣做,也應該工作的方式。

問題出現時,說你的函數在失敗時返回false,成功時返回一個整數/字符串。在這種情況下,你的支票的方式不會false0(返回爲一個成功的返回值)之間的區分

+0

目前我只設置它返回true或false,我也很喜歡它返回一個字符串,但我慢慢地把事情......痛苦地如此! 出於興趣,我知道==和===有區別,但在這種情況下它是如何改變結果的? – TooManyCooks 2010-03-16 13:34:02

0

確保您的函數返回一個boolean而不是string

function check_input() 
{ 
     if(! [enter logic here]) 
      return false; # not return "false"; 

     return true; 
} 

然後爲codaaddict說,檢查函數的返回值類型以及是否與===

+0

「檢查類型」?但是這是一個請求變量,因此**總是**一個字符串 – symcbean 2010-03-16 13:38:40

+0

不,請檢查check_input()的返回類型 – Andy 2010-03-16 13:47:54

相關問題