繁体   English   中英

更简洁的数据解析方式

[英]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语句。 比较的结果是truefalse ,所以你可以直接使用它。

您可以使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM