我尝试在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
}
}
?>
答案 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)
首先将csv文件转换为数组。
std::shuffle
其次,使用$csv = array_map('str_getcsv', file('file.csv'));
作为上面数组中的电子邮件。 (例如:http://php.net/manual/en/function.array-search.php)
array_search
如果有电子邮件,它会返回数组中的密钥。