проверка значения, если conditino не печатает правильный вывод - PullRequest
0 голосов
/ 29 сентября 2018

Я работаю в чате, и я хочу выполнить условие: когда пользователь отправляет и файл, и текстовое сообщение, он возвращает ошибку.

, но это не работает правильно.

это мой код

if($_FILES['chat_upload_file']){

                    echo "You are in file checking<br/>";
                    echo $text_message;
                    if($text_messege){
                        echo "It's in IF<br/>";
                        $error = 1;
                        $error_msg = "Either Sender can send file or text";
                        exit(0);
                    }
                    else{

                        echo "it's in else<br/>";
                        exit(0);
}

здесь $text_messege = "hello user";

вывод, который я хочу получить из внутреннего IF: Это в IF

но вывод: Это в другом

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Попробуйте это:

if(!empty($_FILES['chat_upload_file']) && !empty($text_messege)){
    //both
}else if(!empty($_FILES['chat_upload_file'])){
    //file only
}else if(!empty($text_messege)){
    //message only
}else{
    //nither
}

Я бы, вероятно, использовал empty вместо того, чтобы просто проверять, является ли оно истинным или ложным.Пустой будет охватывать неопределенные проблемы индекса, которые могут у вас возникнуть.Без дальнейших действий у меня нет возможности узнать, возможно ли это.Например, у меня нет идеи, откуда взято $message, и если оно всегда считается "установленным" (или не определено).

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

$file = !empty($_FILES['chat_upload_file']) ? $_FILES['chat_upload_file'] : false;

$text_messege = !empty($text_messege) ? $text_messege : false;

if($file && $text_messege){
    //both
}else if($file){
    //file only
}else if($text_messege){
    //message only
}else{
    //nither
}

Таким образом, вы проверяете только пустой 2x вместо 4x.

Оригинал и проблемы

условие, которое я хочу реализовать, заключается в следующем: когда пользователь отправляет и файл, и текстовое сообщение, он возвращает ошибку.

Вы должны (или должны) рассмотреть 4 варианта (2 ^ 2), что каждая переменная может иметь 2 состояния, хорошо вызывать их и выключать

  File | Message
   on    on
   on    off
   off   on
   off   off

В вашем оригинале вы рассматриваете только2 из них

  File | Message
   on    on
   on    off

Потому что:

if($_FILES['chat_upload_file']){
    if($text_messege){
       //file: on  message: on
    }else{
      //file: on  message: off
    }
}

Не учитывает, что происходит, если файл не передан.И если отправка файла и сообщения является ошибкой, то все должно быть в порядке, если вы отправляете только сообщение, а не файл.В противном случае вы никогда не сможете отправить сообщение (вы не можете отправить файл и вы не можете отправить его без).Может быть, есть вещи под этим?Но я не знаю, как это сделать.

Нет смысла добавлять еще один к внешнему IF, потому что вы, вероятно, будете дублировать вещи.

if($_FILES['chat_upload_file']){
    if($text_messege){
       //file: on  message: on
    }else{
      //file: on  message: off
    }
}else{
    if($text_messege){
       //file: off  message: on
    }else{
      //file: off  message: off
    }
}

И этоУ чище есть 1 блок управления с 4 условиями, затем 3 блока управления с 6 условиями.

Это подразумевается тем, что вы хотите сделать:

  • хорошо иметь толькоfile
  • хорошо иметь только сообщение (ты не считаешь его)
  • не хорошо иметь и файл, и сообщение
  • , кто не знает ни того, ни другого (ты не считаешь это)

надеюсь, что это имеет смысл.

0 голосов
/ 29 сентября 2018

try

if($text_messege == "hello user"){

это оценит, что $ text_message установлено как "hello user"

if($text_messege){

просто оценивает, что $ text_message установлено и имеет значение, отличное от нуляили ложь.

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