PHP - Сообщение: неопределенный индекс, но индекс существует - PullRequest
1 голос
/ 05 марта 2020

У меня действительно странная проблема. У меня есть небольшой скрипт, который читает файл .csv и хранит его в MySQL базе данных. Загрузка и чтение файла работает нормально (это библиотека csvreader для CodeIgniter) - когда я делаю:

$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);
 }

, но в этот момент я получаю сообщение:

Уровень важности: Уведомление Сообщение: неопределенный индекс: адрес электронной почты

Таким образом, в l oop var_dumping

var_dump($data_from_csv);

дает мне такой результат:

array(1) { ["email_address"]=> string(29) "info.bucharest@xxx.com" }

Весь проект работает на виртуальном хостинге PHP 7.3, а каркас - CodeIgniter3.

Что я делаю не так?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Вы перебираете простой массив, поэтому переменная $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);
}
0 голосов
/ 05 марта 2020

Хорошо - я понял.

То, что произошло в этом случае, может иметь отношение к кодированию символов ... Я думаю.

Для теста в моем l oop я добавил чек 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);
}

Итак .. Теперь я буду в поиске, чтобы убедиться, что загруженный файл пользователем правильно закодирован. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...