我有一个获取内部变量的表单。原始看起来像这样:
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
更改为on
或off
。见下文:
然后我添加了这个输入字段,如果它被切换,它将获取另一个字段以填充它:
<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语句的最佳方法是什么?或者我如何修改我的代码以获得最佳实践?理想情况下,我想让我更容易在输入中添加更多带有字段的变量,而不必使用混乱的代码。
答案 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;
}
?>