我正在聊天室工作,我要实现的条件是: 当用户同时发送文件和文本消息时,它将返回错误。
但这无法正常工作。
这是我的代码
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
但输出为:在其他地方
答案 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个条件的控制块,这要干净得多。
您要执行的操作暗示了这一点:
有道理的希望。