Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是';其他';在'中退出脚本时需要;如果';?_Php_If Statement - Fatal编程技术网

Php 是';其他';在'中退出脚本时需要;如果';?

Php 是';其他';在'中退出脚本时需要;如果';?,php,if-statement,Php,If Statement,我有个问题。我(想我)知道这两种方法都会奏效,但我很好奇什么更“正确” 假设我们有一个表单,需要一个PHP脚本来处理用户输入。PHP脚本将检查输入是否被视为垃圾邮件(如蜜罐方法),匹配验证码,验证内容,。。。每次条件返回false时,我们都会退出脚本(使用exit()或die()) 假设代码如下所示: if($input=='spam') { die('This is spam'); } else { if(!validation($input)) { die('Inpu

我有个问题。我(想我)知道这两种方法都会奏效,但我很好奇什么更“正确”

假设我们有一个表单,需要一个PHP脚本来处理用户输入。PHP脚本将检查输入是否被视为垃圾邮件(如蜜罐方法),匹配验证码,验证内容,。。。每次条件返回false时,我们都会退出脚本(使用
exit()
die()

假设代码如下所示:

if($input=='spam') {
   die('This is spam');
} else {
   if(!validation($input)) {
      die('Input is not valid');
   } else {
      if(!matchCaptcha($input['captcha'])) {
         die('Captcha doesn\'t matcha');
      } else {
         //Process input...
      }
   }
}
我的问题如下:每次退出脚本后,是否有必要编写“else”?

我一直都是这样做的,因为我是这样学的。正如你所看到的,我对代码还是相当陌生的

节省大量空白,回答我的问题!:D


提前谢谢

我发现,当与我构建代码的方式结合使用时,如果使用else而不使用if,则表明没有考虑逻辑案例。而且,由于我的编码偏好,我会像上面那样用成对的if-else语句编写代码(或者用Gio所示的
if-elseif-else

但是,将
if(..)die..
逻辑展平到单个级别没有问题-这也适用于
返回
、抛出异常和任何其他“跳过还押代码”的方法。原始代码在语义上等价于以下较浅的结构

if($input=='spam') {
  die('This is spam');
}
if(!validation($input)) {
  die('Input is not valid');
}
if(!matchCaptcha($input['captcha'])) {
  die('Captcha doesn\'t matcha');   
}

//Process input...

它不需要else或elseif块。它不是必需的,但如果有不良做法的味道,则需要深度嵌套:例如,在这里,验证类可以通过一些检查
foreach
,如果失败则返回false,如果用另一个方法请求,则提供错误字符串。这样,您就可以在不增加级别的情况下添加额外的检查,您可以组织您的检查,您可以重新使用您的检查,并且如果需要额外的检查,该类的“使用者”无需更改其代码。谢谢@Wrikken,这非常有意义!