Понимание && в PHP, если -clause - PullRequest
1 голос
/ 24 августа 2009

Как вы можете получить 1 как вывод из # 2?

# 1

Я запустил этот код

echo validate_email ( $email );
echo validate_password ( $password );
echo validate_username ( $username );  

Я получаю

111

что означает, что все в порядке.

# 2

Я запускаю этот код

function validate ( $email, $password, $username ) {
    if (  (validate_email ( $email ) == 1)
        AND (validate_password ( $password ) == 1)
        AND (validate_username ( $username ) == 1 ) )
            return 1;
}
echo validate ($email, $password, $username );

Я ничего не получаю как выход.

Я попытался исправить проблему, изменив AND на &&, но тот же вывод остался. Выход должен быть 1.

Ответы [ 2 ]

6 голосов
/ 24 августа 2009

Вы ничего не получаете в качестве вывода, потому что вы только возвращаете 1, фактически не повторяя его Вещи не будут отражены для пользователя, если вы не скажете PHP сделать это.

Пример:

function test() {
    if (  (validate_email ( $email ) == 1)
        AND (validate_password ( $password ) == 1)
        AND (validate_username ( $username ) == 1 ) )
            return 1;
    else
            return 0;

echo test();

Кроме того, вот пара моментов по if в целом:

  • Вы, вероятно, должны использовать && вместо AND, так как первое более распространено.
  • Вам не нужен бит == 1 - 1 всегда равен TRUE. Пример: * +1021 *

    if ( validate_email($email) ) // correct email
    

    Вместо:

    if ( validate_email($email) == 1 ) // correct email
    
2 голосов
/ 24 августа 2009

В первом примере вы эхо вывод каждой функции. Во втором примере вы возвращаете 1, если все они равны 1.

Возврат чего-либо не выводит это в STDOUT. Вы должны повторить это, если хотите этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...