2014-02-07 108 views
0

我有一段代码,我试图用变量变量缩短,想检查这是否是一个有效的代码。我们可以用{来声明变量变量吗?

原始代码:

$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必须制定更严格的关于负面投票的政策,并且其他人必须对此类投票进行审查 - 我认为,像这样的随机大众否定投票可能会导致高度的士气低落。

+3

提示:*使用数组*](http://oreilly.com/catalog/progphp/chapter/ ch05.html) - 就像$ _POST是一个数组一样,通过使用一个集合。 – user2864740

+2

不要打扰设置变量!只需在循环中使用'$ _POST [$ field]'。 –

回答

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); } 
} 
1

你已经有一个数组,你可以使用:

foreach($_POST as $field => $value){ 
    if (!empty($value)) update_user_meta($user_id, $field, $value); 
} 

但是,你需要在POST数据运行验证,并确保您防范SQL注入

+2

理想情况下,提供'update_user_meta'的框架已经被设计为从sql注入安全。 – Andrejovich

相关问题