检查conditino是否未打印正确输出的值

时间:2018-09-29 07:05:50

标签: php if-statement magento

我正在聊天室工作,我要实现的条件是:   当用户同时发送文件和文本消息时,它将返回错误。

但这无法正常工作。

这是我的代码

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 :(得分:0)

尝试

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

这将评估$ text_message设置为“你好用户”

if($text_messege){

仅评估设置了$ text_message并将其设置为null或false以外的其他值。

答案 1 :(得分:0)

尝试一下:

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

在您的原始作品中,您仅考虑其中的

  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个条件的控制块,这要干净得多。

您要执行的操作暗示了这一点:

  • 只有一个文件很好
  • 可以只收到一条消息(您不考虑)
  • 不能同时拥有文件和消息
  • 谁都不认识(你不认为)

有道理的希望。