关于php:在array_keys中跳过提交按钮

Skip Submit button in array_keys

本问题已经有最佳答案,请猛点这里访问。

我有一个处理表单并将值输出到csv文件的php例程。我正在使用array_keys()创建标题行(如果有标题行,则跳过)。除了最后一个标题词是"提交"之外,所有东西都工作得很好,因为,当然,我的表单包含一个提交按钮。所以数据最终看起来是这样的:

1
2
3
name,email,cell,dob,study,submit
"Temp One",fred@gmail.com,646-325-1111,1995-03-31,8,Submit
"Temp Two",tom@gmail.com,646-325-2222,1995-03-31,4,Submit

如何从标题和数据中省略提交按钮?

以下是我的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if(isset($_POST['submit'])) {
    $data = array_values($_POST); // get only values
    $headers = array_keys($_POST); // keys are headers
    if( $fp = fopen('data.csv','a+')) {
        $line = fgets($fp);
        if(!$line == $headers) {
                fputcsv($fp, $headers);
                fputcsv($fp, $data);
        }
        else
        {
            fputcsv($fp, $data);
        }
        fclose($fp);
        header('Location: thanks.php');
    }
}


从数组中删除它…

1
2
3
4
$post = $_POST;
unset($post['submit']);
$data = array_values($post); // get only values
$headers = array_keys($post); // keys are headers


从HTML的"提交"按钮中删除名称

而不是

1
if(isset($_POST['submit']))

使用

1
if($_SERVER["REQUEST_METHOD"] =="POST")


array_pop()将删除数组的最后一个元素:

1
2
$data = array_pop(array_values($_POST)); // get only values
$headers = array_pop(array_keys($_POST)); // keys are headers