[英]PHP - Message: Undefined index but index exists
我有一个非常奇怪的问题。 我有一个读取 .csv 文件并将其存储在 MySQL 数据库中的小脚本。 上传和读取文件工作正常(这是 CodeIgniter 的 csvreader 库) - 当我这样做时:
$csvData = $this->csvreader->parse_csv($_FILES['csv_file']['tmp_name']);
var_dump($csvData);
我得到了正确的结果:
array(62) {
[1]=>
array(1) {
["email_address"]=>
string(29) "info.bucharest@xxx.com"
}
[2]=>
array(1) {
["email_address"]=>
string(28) "cristina.banu@xxx.com"
}
[3]=>
array(1) {
["email_address"]=>
string(24) "office-ro@gxxx.com"
}
接下来我要做的就是循环
foreach($csvData as $data_from_csv){
$this->add_email_to_a_group($data_from_csv['email_address'], $contact_group_id);
}
但此刻我收到消息:
严重性:通知消息:未定义索引:email_address
所以在循环中 var_dumping
var_dump($data_from_csv);
给我这个结果:
array(1) { ["email_address"]=> string(29) "info.bucharest@xxx.com" }
整个项目运行在共享主机 PHP 7.3 上,框架是 CodeIgniter3。
我做错了什么?
提前致谢。
您正在循环一个简单的数组,因此 var $data_from_csv
将包含电子邮件地址。
错误信息是因为$data_from_csv
中实际上没有email_address
出现
所以相应地更改此代码
foreach($csvData as $data_from_csv){
$this->add_email_to_a_group($data_from_csv, $contact_group_id);
}
或者更好的是,给变量命名,这样发生的事情就更清楚了
foreach($csvData as $email){
$this->add_email_to_a_group($email, $contact_group_id);
}
好的 - 我知道了。
在这种情况下发生的事情可能与字符编码有关......我认为。
对于循环中的测试,我添加了一个检查var_dump(array_keys($data_from_csv));
它告诉我“电子邮件”由 8 个字符组成,而不是 5 个
foreach($csvData as $data_from_csv){
var_dump(array_keys($data_from_csv));
// this was returnig (int)8 rather than expected (int)5
$this->add_email_to_a_group($data_from_csv['email'], $contact_group_id);
}
所以......现在我将努力确保用户上传的文件被正确编码。 谢谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.