我们可以使用{来声明变量变量吗?

时间:2014-02-07 21:21:52

标签: php variables

我有一段代码,我试图使用变量变量缩短,想检查这是否是一个有效的代码。

原始代码:

$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必须制定更严格的关于否定投票的政策,并且必须对其他人进行此类投票的审查 - 我认为,像这样的随机大规模否定投票可能会非常令人沮丧。

2 个答案:

答案 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 ); } 
}