[英]cleaner way to parse data
我在表单上有 9 个复选框,我正在执行以下操作:
//names of $_POST checkboxes
$interests = array("energy","recycling","composting","electric","climate","gas",
"pesticides","water","other");
$ival=[];
if($_POST["energy"] === "on")$ival[0]=true;
else $ival[0]=false;
if($_POST["recycling"] === "on")$ival[1]=true;
else $ival[1]=false;
if($_POST["composting"] === "on")$ival[2]=true;
else $ival[2]=false;
if($_POST["electric"] === "on")$ival[3]=true;
else $ival[3]=false;
if($_POST["climate"] === "on")$ival[4]=true;
else $ival[4]=false;
if($_POST["gas"] === "on")$ival[5]=true;
else $ival[5]=false;
if($_POST["pesticides"] === "on")$ival[6]=true;
else $ival[6]=false;
if($_POST["water"] === "on")$ival[7]=true;
else $ival[7]=false;
if($_POST["other"] === "on")$ival[8]=true;
else $ival[8]=false;
for($i=0;$i<9;$i++){
query ("insert into interest (usr,
subject,
value)
values(?,?,?)",
$usr,$interests[$i],$ival[$i]);
}
有没有办法避免所有这些 if 语句?
你不需要if
语句。 比较的结果是true
或false
,所以你可以直接使用它。
您可以使用array_map()
来创建数组,而不是大量单独的分配。
$ival = array_map(function($interest) { return $_POST[$interest] === "on"; }, $interests);
但是您并不真正需要$ival
数组,您可以遍历$interests
并在那里执行查询。
foreach ($interests as $interest) {
query("insert into interest (usr, subject, value) values (?, ?, ?)",
$usr, $interest, $_POST[$interest] === "on");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.