提问人:Sosumi 提问时间:7/20/2013 更新时间:7/20/2013 访问量:157
对于许多 if 语句来说,最合乎逻辑的结构是什么?
What is the most logical structure for many if statements?
问:
我目前正在PHP中创建一个简单的登录脚本,成功登录必须满足许多条件。据我所知,有两种方法可以格式化所需的 if 语句。
第一种方法是使用嵌套的 if 语句:
if ($condition1 == true) {
if ($condition2 == true) {
if ($condition3 == true) {
//Successful login
} else {
}
} else {
}
}
第二种方法是使用过程 if 语句:
if ($condition1 != true) {
die("error");
}
if ($condition2 != true) {
die("error");
}
if ($condition3 != true) {
die("error");
}
//successful login
处理许多条件的两种方法中哪一种被认为更合乎逻辑?有没有其他我没有在这里列出的更好、更合乎逻辑的方法?
答:
0赞
Jarek.D
7/20/2013
#1
这对我来说更合乎逻辑。因为它在一个语句中代表了“登录决策的逻辑”,如果逻辑会变得更加混乱,它仍然是最具可读性的
if (($condition1 == true)
&& ($condition2 == true)
&& ($condition3 == true)
&& ($condition4 == true)
&& ($condition5 == true)
评论
3赞
Sosumi
7/20/2013
那行得通;但是,如果满足“$condition 3”,但不满足“$condition 4”,则需要执行什么操作?我想这种方法失去了该功能。
0赞
Jarek.D
7/20/2013
在这种情况下,顺序方法是唯一的方法。或者更面向对象的方法 - 使条件成为类等
3赞
Timbo_KZ
7/20/2013
#2
在这种情况下,这并不重要,除非你想向用户展示你遇到的所有错误。
例如,您可以执行以下操作:
if($condition1 != true) {
if($condition2 != true) {
if($condition3 != true) {
// Success! Login now...
} else {
die(error3);
}
} else {
die(error2);
}
} else {
die(error1);
}
在这种情况下,用户将被迫在出现错误时修复错误。这可能需要更多时间,但更容易理解。
if ($condition1 != true) {
$error = 'Error 1';
}
if ($condition2 != true) {
$error .= 'Error 2';
}
if ($condition3 != true) {
$error .= 'Error 3';
}
if($error != '') {
die($error);
} else {
// Success! Login now...
}
在这种情况下,用户将同时看到所有错误,并且他或她将能够在再次提交表单之前修复所有错误,但更多信息总是更难理解。
更新:
约翰说的是对的。
在下面的某个地方,在登录表单和输入附近,您可以制作如下 php 代码:
<?php if($error != '') { ?><p style="color:red;"><?php echo $error; ?></p><?php } ?>
显然,您需要使用我上面显示的代码来防止服务器在发现错误时尝试登录。
希望这会有所帮助......
评论
2赞
Herbert
7/20/2013
就个人而言,我更愿意一次看到所有错误。修复一个错误,然后得到另一个错误有点烦人。这太像调试了。
1赞
Amal Murali
7/20/2013
#3
我会做这样的事情:
if(!(condition1)){
$ok = false;
}
if(!(condition2)){
$ok = false;
}
if(!(condition3)){
$ok = false;
}
if($ok){
//if they got here, they must have passed all the tests!
}
可以缩写为:
if( !(condition3) || !(condition2) || !(condition3) ){
echo "Success!";
}
从您的评论中:
如果满足“$condition 3”,但不符合“$condition 4”怎么办?
您可以使用如下内容:
if( (condition1) && !(condition4) ) {
echo "Hurray! Condition 1 was satisified but condition 4 failed :(";
}
上一个:所有程序都必须有返回值吗?
评论