В PHP я могу проверить логическое значение при вызове функции? - PullRequest
1 голос
/ 16 марта 2010

У меня есть функция, которая проверяет переданное значение и возвращает false или true, если false, я хочу добавить что-то в массив. Код, который я написал, ниже.

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

Сейчас он все равно добавляется в мой массив, независимо от того, что введено в форму. Является ли способ, которым я написал, что правильный способ проверить, является ли возврат из check_input() ложным? Я проверил логику функции, изменив возврат к эхо-сигналам, и он возвращает правильное значение, я просто не уверен, что проверяю его неправильно.

Ранее я пытался записать его как $X=check_input и т. Д., А затем if(check_value == false), но, похоже, это тоже не дает мне желаемого результата. Хм, быстрый указатель, пожалуйста!

Edit:

Хорошо, посмотрев на мою функцию, я думаю, что обнаружил проблему, у меня есть оператор if, и в этом операторе if else первое if проверяет значение не пустое, второе if проверяет, что нет превышает его максимальную длину и возвращает истину / ложь. Я установил его, чтобы проверять максимальную длину, только если я передал это значение - или он установлен в ничто. Но в итоге у меня нет возврата true для основного оператора if. Так что моя логика в настоящее время такова: если значение больше, чем ничто, тогда сравните его с максимальной длиной, а затем верните true. Если я не проверяю максимальную длину и она имеет значение, она ничего не возвращает. Хммм. Я думаю, что это является причиной моей проблемы?

Редактировать 2:

Спасибо всем и Марвину, который предложил мне перепроверить функцию. У меня это работает. Это не так, если что-то возвращает false, если что-то еще возвращает false, и я взял свое возвращение true из оператора else и эй presto!

Ответы [ 2 ]

1 голос
/ 16 марта 2010

Вам необходимо сравнить возвращаемое значение функции с false, используя оператор ===:

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

Но если вы уверены, что функция возвращает только значение boolean, ваш способ работы также должен работать.

Проблема возникает, когда, скажем, ваша функция возвращает false в случае неудачи и целое число / строка в случае успеха. В этом случае ваш способ проверки не будет различаться между false и 0 (возвращается как успешное возвращаемое значение)

0 голосов
/ 16 марта 2010

Убедитесь, что ваша функция возвращает boolean, а не string

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

      return true;
 }

Тогда, как говорит codaaddict , проверьте возвращаемое значение функции для типа, а также равенство с ===

...