我有一段代码,我试图使用变量变量缩短,想检查这是否是一个有效的代码。
原始代码:
$town = ( $_POST['town'] ) ;
$county = ($_POST['county'] ) ;
// Update town user meta
if ( !empty( $town ) )
update_user_meta( $user_id, 'town', $town);
// Delete town user meta
else
delete_user_meta( $user_id, 'town' );
//Update county user meta
if ( !empty( $county ) )
update_user_meta( $user_id, 'county', $county);
// Delete county user meta
else
delete_user_meta( $user_id, 'county' );
缩短代码:
$fields = array("town","county");
foreach ($fields as $field) {
${$field} = $_POST[$field];
if ( !empty( $field ) ) { update_user_meta( $user_id, "$field", ${$field}); } else { delete_user_meta( $user_id, "$field" ); }
}
如果没有缩短的代码,我们可以容纳更多的变量,这就是目标。
感谢您的时间。
修改
特别感谢所有负面选民。我在这里的最后一篇文章有7个反对票,到目前为止只有2个。 Com'n伙计们,打破我的最后记录。
更严重的是,Stackoverflow必须制定更严格的关于否定投票的政策,并且必须对其他人进行此类投票的审查 - 我认为,像这样的随机大规模否定投票可能会非常令人沮丧。
答案 0 :(得分:1)
您已经拥有了一个可以使用的数组:
foreach( $_POST as $field => $value ){
if ( !empty( $value ) ) update_user_meta( $user_id, $field, $value);
}
但是,您需要对POST数据运行验证并确保防范sql注入
答案 1 :(得分:1)
您可能正在寻找类似
的内容foreach($_POST as $key => $value){
if ( !empty( $value) ) { update_user_meta( $user_id, $key, $value); }
else { delete_user_meta( $user_id, $key); }
}
或类似的东西。
编辑:但是如果你真的需要定义一个你可以做的字段列表
$fields = array("town","county");
foreach($fields as $field){
if ( !empty($_POST[$field]) ) { update_user_meta( $user_id, $field, $_POST[$field]); }
else { delete_user_meta( $user_id, $field ); }
}