Неопределенный индекс в массиве, но он есть - PullRequest
1 голос
/ 16 апреля 2019

У меня есть массив с именем $csv.Столбцы заголовка содержатся в $csv[0].У меня есть цикл, который входит и перезаписывает некоторые данные в массиве $csv, начиная с индекса 1.

По какой-то причине он больше не получает никакого значения, когда я пытаюсь вывести $csv[1]['CRM ID'], даже если значениекогда я делаю var_export из $csv[1].

I , я могу читать данные из $csv[1]['Agency'] очень хорошо.Это как-то связано с пространством?До сих пор он работал до тех пор, пока не был изменен, казалось бы, неродственный фрагмент стороннего кода.

<code>// Agency ID - prefix + zerofill
$agency_id_n = strpos($csv[$i]['Agency'], 'A') === 0 ? (int) ltrim($csv[$i]['Agency'], 'A') : (int) $csv[$i]['Agency'];
$csv[$i]['Agency'] = $agency_id_p = 'A' . str_pad($agency_id_n, 5, '0', STR_PAD_LEFT);

// CRM ID - prefix + zerofill
echo "<h1>\$csv :-</h1><pre>" . print_r($csv, true) . "
"; echo"

\ $ csv [1]: -

" . var_export($csv[1], true) . "
"; echo"

yyyyy = {$ csv [1] ['CRM ID']} /". Var_export ($ csv [1] ['CRM ID'], true). "

"; $ crm_id_n = strpos ($ csv [$ i] ['CRM ID'], 'C') === 0? (int) ltrim ($ csv [$ i] ['CRM ID'], 'C'): (int) $ csv[$ i] ['CRM ID']; echo "

has c =". (strpos ($ csv [$ i] ['CRM ID'], 'C') === 0? 'yes':'no'). "

"; echo "

val = {$ csv [$ i] ['CRM ID']}

"; echo "

y = $ crm_id_n

"; die ("

csv ...

" . print_r($csv, true) . "
");

1 Ответ

1 голос
/ 16 апреля 2019

Преступник fgetcsv был подвержен меткам порядка байтов (BOM) - из комментария к руководству по PHP:

Эта функция не имеет специальной обработки спецификации. Первая ячейка первой строки будет наследовать байты спецификации, то есть будет на 3 байта длиннее, чем ожидалось. Поскольку спецификация невидима, вы можете не заметить.

Excel в Windows или текстовые редакторы, такие как Блокнот, могут добавить спецификацию.

...