我真的很生气,因为有这么多的IF,Else If声明....有没有办法缩短它,让它看起来更干净,更好但仍然有同样的效果?
if(!empty($ck1))
{
$ck1 = 'Tiger';
}
else
{
$ck1 = '';
}
if(!empty($ck2))
{
$ck2 = 'Bears';
}
else
{
$ck2 = '';
}
if(!empty($ck3))
{
$ck3 = 'Owls';
}
else
{
$ck3 = '';
}
答案 0 :(得分:1)
这样的事情可能是最干净的,假设您需要不同的默认值。
$vars = array(
'ck1' => 'Tiger',
'ck2' => 'Owl',
...
'ck36' => 'Foo'
);
foreach($vars as $var=>$default) {
$$var = !empty($$var) ? $default : '';
}
您可以动态使用for
并构建$var
,但处理默认值会很痛苦(特别是编辑会导致错误,而不是以后),所以它不值得。< / p>
修改强>
$vars
数组包含您要作为键处理的变量名称,默认值作为值。所以你可以拥有你喜欢的那么多。
编辑2
谨防变量范围。你还说ck
来自Check boxes on a form
。如果是,那么这意味着您启用了register_globals
?如果是这样,这是个坏主意,你应该尽快禁用它。
编辑3
通过在变量名标记中使用[]
,您应该将它们组织为数组,而不是拥有大量变量:
<input name="ck[]" value="Foo">
<input name="ck[]" value="Bar">
然后所有输入(如果是复选框,当然都经过检查)可以在$_POST['ck']
中轻松找到。如果您想要查看特定项目,也可以添加自己的索引:
<input name="ck[foo]" value="Foo">
以$_POST['ck']['foo']
的形式提供。这样可以使您的代码更清晰,即:
$input = $_POST['ck'];
$vars = array(
'ck1 => 'Tiger',
'ck2' => 'Owl,
...
'ck36' => 'Foo'
);
foreach($vars as $key=>$default) {
$input[$key] = !empty($input[$key]) ? $default : '';
}
然后你可以在你的代码中进一步使用$input
,而不是在脚本范围内有大量的变量。
答案 1 :(得分:0)
您可以使用三元运算符:
$ck1 = !empty($ck1) ? 'Tiger' : '';
$ck2 = !empty($ck2) ? 'Bears' : '';
$ck3 = !empty($ck3) ? 'Owls' : '';
从技术上讲,它仍然是一堆if语句,但它更简洁。
如果你有很多东西要引用,你可以创建一个数组并循环遍历它:
$cks = array(
'ck1' => 'Tiger',
'ck2' => 'Bears',
'ck3' => 'Owls',
...
);
foreach($cks as $var => $value) {
$$var = !empty($$var) ? $value : '';
}
答案 2 :(得分:-1)
也许&#39; switch&#39;声明可以帮助你