首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查$_POST中的可选字段

如何检查$_POST中的可选字段
EN

Stack Overflow用户
提问于 2008-10-21 16:26:00
回答 4查看 2.6K关注 0票数 1

目前,我的代码如下所示:

代码语言:javascript
复制
# Assign values for saving to the db
$data = array(
    'table_of_contents' => $_POST['table_of_contents'],
    'length' => $_POST['length']
);

# Check for fields that may not be set
if ( isset($_POST['lossless_copy']) )
{
   $data = array(
       'lossless_copy' => $_POST['lossless_copy']
    );
}

// etc.

这将导致无休止的if语句。即使使用三元语法,它仍然很混乱。有没有更好的方法?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-10-21 17:08:42

这样如何:

代码语言:javascript
复制
// this is an array of default values for the fields that could be in the POST
$defaultValues = array(
    'table_of_contents' => '',
    'length' => 25,
    'lossless_copy' => false,
);
$data = array_merge($defaultValues, $_POST);
// $data is now the post with all the keys set

array_merge()将合并这些值,让后面的值覆盖前面的值。

如果你不想信任array_merge(),那么你可以做一个foreach()循环。

票数 9
EN

Stack Overflow用户

发布于 2008-10-21 16:57:22

代码语言:javascript
复制
foreach ($_POST as $key => $value) {
  $data[$key] = $value;
}

记住要清理您的$_POST值!

编辑:如果您希望将可选的MySQL值与表中可能存在或可能不存在的字段进行匹配,您可以这样做(我假设您正在使用$_POST ):

代码语言:javascript
复制
$fields = array();
$table  = 'Current_Table';

// we are not using mysql_list_fields() as it is deprecated
$query  = "SHOW COLUMNS from {$table}";
$result = mysql_query($query);
while ($get = mysql_fetch_object($result) ) {
  $fields[] = $get->Field;
}

foreach($fields as $field) {
  if (isset($_POST[$field]) ) {
    $data[$field] = $_POST[$field];
  }
}
票数 4
EN

Stack Overflow用户

发布于 2008-10-21 16:59:19

您可以构建一个可选字段数组:

代码语言:javascript
复制
$optional = array('lossless_copy', 'bossless_floppy', 'foo');
foreach ($optional as $field) {
    if (isset($_POST[$field])) {
        $data[$field] = $_POST[$field];
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/222520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档