Я хочу объединить два массива, один как ключ, а другой как данные.
Однако когда я 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." ...)
Я действительно понятия не имею, что происходит не так.
Любая помощь приветствуется!
Спасибо.
Этот дополнительный символ — символ новой строки. 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);
Символ после индекса на самом деле не пробел, это новая строка (или две). В основном в вашем текстовом файле в конце каждой строки будет \ n или \ r \ n. Чтобы удалить их перед вставкой, просто используйте встроенную в PHP функцию trim ($ content), которая удалит все пробелы слева и справа от строки. например trim(' hello world! ')
вернется 'hello world!'