CSV文件到数组,在PHP中有条目验证

时间:2017-01-20 18:03:17

标签: php html arrays csv import

我尝试在php中使用str_getcsv将csv文件转换为数组。之后我想检查表单提交是否在csv文件alreaddy中。

我的代码:

//get form input
$email = $_POST["email"]; 

//create array
$csv = array('str_getcsv', file('file.csv')); 

//functio to check csv content for $email
function val() {
   if (in_array($email, $csv)) {
     echo "Enthalten";
   } 
   else {
     echo "Nicht enthalten";
   }
}

支票现在正在运作。但是else {}语句中的代码不是。

<?php
$email = $_POST["email"];
$csv = array_map('str_getcsv', file('file.csv'));

foreach ($csv as $row) {
if (in_array($email, $row)) {

    echo "Error";

} else {

    // this code is working fine if seperated
    $list = array (array($email),);
    $fp = fopen('file.csv', 'a');
    foreach ($list as $fields) {
    fputcsv($fp, $fields);
    }
    fclose($fp);


// here is a working skript to send an email to the $email recipient


}
}


?>

2 个答案:

答案 0 :(得分:0)

array_map('str_getcsv', file('file.csv'))将返回一个多维数组。 in_array()不会像这样工作。

您需要遍历CSV中的每一行以查找电子邮件。

//get form input
$email = $_POST["email"]; 

//create array
$csv = array_map('str_getcsv', file('file.csv'));

foreach ($csv as $row) {
    if (in_array($email, $row)) {
        echo "Enthalten";
    } else {
        echo "Nicht enthalten";
    }
}

答案 1 :(得分:0)

  1. 首先将csv文件转换为数组。

    std::shuffle

  2. 其次,使用$csv = array_map('str_getcsv', file('file.csv'));作为上面数组中的电子邮件。 (例如:http://php.net/manual/en/function.array-search.php

    array_search

  3. 如果有电子邮件,它会返回数组中的密钥。