【发布时间】:2020-06-18 01:19:54
【问题描述】:
我遇到了一个非常奇怪的问题。 我有一个读取 .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。
我做错了什么?
提前致谢。
【问题讨论】:
-
您确定每条记录都有关联的
email_address吗?我猜该集中有 1 条或多条记录实际上缺少该属性 -
您可以通过在循环中添加以下内容来测试上述理论:
if (!isset($data_from_csv['email_address'])) { var_dump($data_from_csv);}看看会吐出什么 -
如果有帮助就试试这个
foreach($csvData as $data_from_csv){ $this->add_email_to_a_group($data_from_csv[0]['email_address'], $contact_group_id); } -
FWIW,在尝试通过以下方式使用它之前,最好检查是否存在所需的数组索引:
if (isset($data_from_csv['email_address'])) { // do something with $data_from_csv['email_address'] here ... ;} -
var_dump()总是会造成混乱,请使用print_r以便获得数组的确切结构。
标签: php arrays codeigniter