массивы — PHP Array_combine неопределенный индекс

Я хочу объединить два массива, один как ключ, а другой как данные.
Однако когда я print_rВ массиве я вижу, что к ключам добавлено загадочное пространство. Даже если я возьму совершенно другой массив, пробелы, кажется, вновь появляются после array_combine,

Также, если я пытаюсь получить доступ к элементу массива путем добавления пробела к ключу, я все равно получаю ошибку Undefined offset: 200,

Это мой код:

$codes = file('H_codes.txt');
$sentences = file('H_sentences.txt');
$H_sentences_combined = array_combine($codes,$sentences);

echo $H_sentences_combined['200'];

Я извлекаю массивы из двух текстовых файлов:
H_codes.txt

200
201
202
...

и $H_sentences файл в том же формате (т.е. без встроенных пробелов, только пробелы в следующей строке)

"Zeer licht ontvlambare aerosol.""Ontvlambare aerosol.""Zeer licht ontvlambare vloeistof en damp."...

Это результат print_r($H_sentences_combined)

 Array ( [200 ] => "Instabiele ontplofbare stof." [201 ] => "Ontplofbare stof: gevaar voor massa-explosie." [202 ] => "Ontplofbare stof, ernstig gevaar voor scherfwerking." ...)

Я действительно понятия не имею, что происходит не так.

Любая помощь приветствуется!
Спасибо.

0

Решение

Этот дополнительный символ — символ новой строки. file добавляет их к каждой строке, которую он читает в массив.

Измените свои файловые вызовы так, чтобы избавиться от этих дополнительных символов новой строки:

$codes = file('H_codes.txt', FILE_IGNORE_NEW_LINES);
$sentences = file('H_sentences.txt', FILE_IGNORE_NEW_LINES);
$H_sentences_combined = array_combine($codes,$sentences);
2

Другие решения

Символ после индекса на самом деле не пробел, это новая строка (или две). В основном в вашем текстовом файле в конце каждой строки будет \ n или \ r \ n. Чтобы удалить их перед вставкой, просто используйте встроенную в PHP функцию trim ($ content), которая удалит все пробелы слева и справа от строки. например trim(' hello world! ') вернется 'hello world!'

0

По вопросам рекламы [email protected]