我对php中的切换不太熟悉,但我听说如果你的代码有很多其他的,那么最好使用switch代替。我试图将下面的代码更改为switch,但由于我在每个elseif检查两个或三个值,似乎使用elseif而不是switch对我来说更合乎逻辑(也许我错了)。
所以我的问题是,你对下面的代码有什么建议? Elseif还是开关?
如果我想将代码更改为switch,你能给我一些提示吗?
提前非常感谢你!
(顺便说一句,block_check和report_check是复选框,reports_msg是文本)
public function block_user(){
if(isset($_POST['submitted'])){
$block_check = $_POST['block_check'];
$report_check = $_POST['report_check'];
$reported_msg = $_POST['reported_msg']);
if((!($block_check)) && (!($report_check))){
echo "dont send, both not checked";
}elseif(($report_check) && ($reported_msg == '')){
echo "dont send, msg box is empty";
}elseif((!($report_check)) && ($reported_msg != '')){
echo "dont send, report_check is not checked";
}elseif(($block_check) && (!($report_check)) && ($reported_msg == '')){
echo "just process block";
}elseif((!($block_check)) && ($report_check) && ($reported_msg != '')){
echo "just process report";
}elseif(($block_check) && ($report_check) && ($reported_msg != '')){
echo "process both block and report";
}
}
}
答案 0 :(得分:4)
Switch在某些情况下非常好,但对其他人来说真的很糟糕。在您的具体情况下,我会使用if / elseif条件。
当条件简单且表达式很简单时,我使用switch
。如果条件有多个变量且表达式长于大约三行,我就不会使用开关。
以下是良好转换的一个很好的例子:
switch ( $type ) {
case 'banana':
$valid = true;
$price = 1;
break;
case 'apple':
$valid = false;
$price = 2.52;
break;
}
答案 1 :(得分:2)
大部分都是关于可读性和品味的,老实说。我更喜欢elseif语句,因为如果条件变得更复杂,它可以提供更大的灵活性。
答案 2 :(得分:1)
要优化代码,您希望将最常用的if
语句放在elseif
语句块的顶部。否则,唯一的区别在于代码的可读性,这实际上是使用switch
个参数的一个很好的理由。