对于带有变量的语句,多条件php的最佳实践是什么?

时间:2017-01-24 15:15:19

标签: php variables if-statement

我有一个获取内部变量的表单。原始看起来像这样:

if ($something != 'Some-thing'{
    $code = ' <form id="form" method="post" action="' . $the_url . '">
              </form>';
    return $code;
} else { 
$code = '<form action="https://www.website.com/">
         </form>';
return $code;
}

首先检查变量$ something是否等于某个值,如果是,则首先检查,如果不是则为秒。

但后来我想添加新字段,使用if / else语句来切换整个字段。

现在,我已经在后端切换了一个切换,我点击了一个复选框,它将$variable1更改为onoff。见下文:

screenshot of the back end

然后我添加了这个输入字段,如果它被切换,它将获取另一个字段以填充它:

<input type="hidden" name="a_variable_1" value="' . $params['a_variable_A'] . '" />

现在,我无法将if语句放入其中,因此我复制了整个字段。这对于一个额外的变量来说很好。

但后来我想添加一个带开/关切换的第二个字段。这就是事情开始变得混乱的地方。

这是我的代码,但它似乎不太实用。如果我想添加另一个变量,那就太荒谬了。

if ($something != 'Some-thing' && $variable1 != "on" && $variable2 != "on") {
    $code = ' <form id="payfrm" method="post" action="' . $the_url . '">
              </form>';
    return $code;
} elseif ($something != 'Some-thing' && $variable1 != "on" && $variable2 === "on") {
    $code = ' <form id="payfrm" method="post" action="' . $the_url . '">
                    <input type="hidden" name="variable_2" value="' . $params['variable_B'] . '" />
              </form>';
    return $code;
} elseif ($something != 'Some-thing' && $variable1 === "on" && $variable2 != "on") {
    $code = ' <form id="payfrm" method="post" action="' . $the_url . '">
                    <input type="hidden" name="variable_1" value="' . $params['variable_A'] . '" />
              </form>';
    return $code;
} elseif ($something != 'Some-thing' && $variable1 === "on" && $variable2 === "on") {
    $code = ' <form id="payfrm" method="post" action="' . $the_url . '">
                    <input type="hidden" name="variable_1" value="' . $params['variable_A'] . '" />
                    <input type="hidden" name="variable_2" value="' . $params['variable_B'] . '" />
              </form>';
    return $code;
} else { 
$code = '<form action="https://www.website.com/">
         </form>';
return $code;
}

在上面,variable_A$variable1后端的值,如上面给出的屏幕截图所示。同样,variable_B是后端$variable2的文本值。

在内部添加if语句的最佳方法是什么?或者我如何修改我的代码以获得最佳实践?理想情况下,我想让我更容易在输入中添加更多带有字段的变量,而不必使用混乱的代码。

4 个答案:

答案 0 :(得分:0)

(快速审核) - 您可以从使用常见事件减少条件树开始:

if ($something != 'Some-thing') {
    if ($variable1 != "on" && $variable2 != "on") {
        $code = ' <form id="payfrm" method="post" action="' . $the_url . '">
                  </form>';
    } elseif ($variable1 != "on" && $variable2 === "on") {
        $code = ' <form id="payfrm" method="post" action="' . $the_url . '">
                        <input type="hidden" name="a_variable_2" value="' . $params['a_variable_B'] . '" />
                  </form>';
    } elseif ($variable1 === "on" && $variable2 != "on") {
        $code = ' <form id="payfrm" method="post" action="' . $the_url . '">
                        <input type="hidden" name="a_variable_1" value="' . $params['a_variable_A'] . '" />
                  </form>';
    } elseif ($variable1 === "on" && $variable2 === "on") {
        $code = ' <form id="payfrm" method="post" action="' . $the_url . '">
                        <input type="hidden" name="a_variable_1" value="' . $params['a_variable_A'] . '" />
                        <input type="hidden" name="a_variable_2" value="' . $params['a_variable_B'] . '" />
                  </form>';
  }
} else {
    $code = '<form action="https://www.website.com/">
             </form>';
}
return $code;

答案 1 :(得分:0)

您应该开始逐步生成代码,而不是在一个then - 块中生成所有内容。

首先,您必须初始化$code变量,然后在条件匹配时添加其他代码。

最后,您只使用整个代码返回一个。像这样:

$code = '';
if ($something != 'Some-thing' {
    $code .= ' <form id="payfrm" method="post" action="' . $the_url . '">';
    if($variable1 == 'on')
        $code .= '<input type="hidden" name="variable_1" value="' . $params['variable_A'] . '" />';
    if($variable2 == 'on')
        $code .= '<input type="hidden" name="variable_2" value="' . $params['variable_B'] . '" />';
} else {
    $code .= '<form action="https://www.thewebsiteaa.com/">';
}
$code .= '</form>';
return $code;

答案 2 :(得分:0)

由于主诉是它变得混乱,为了减少混乱你可以连接你的 on | off参数的值,然后使用一个switch。像这样:

$params = "$variable1-$variable2";

switch($params) {
  case 'on-on':
    if($something == 'Some-thing') {
      // do a
    } else {
      // do b
    }
    break;
  case 'on-off':
    ...
}

答案 3 :(得分:0)

英语不好,我无法解释。

<input name="variable[1]" value="1">
<input name="variable[2]" value="2">
<input name="variable[3]" value="3">
...


<?php


$var_input ='';

foreach($_POST['variable'] as $key => $val){

  $var_input .= sprintf('<input type="hidden" name="variable_%s" value="%s" />',$key, $val);

}

if ($something != 'Some-thing'){

 $code = ' <form id="payfrm" method="post" action="' . $the_url . '">
           ' . $var_input . '
           </form>';
  return $code;
}else{

$code = '<form action="https://www.website.com/">
         </form>';
return $code;
}

?>