Я хочу объединить два массива, один как ключ, а другой как данные. Однако, когда я 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. Чтобы удалить их перед вставкой, просто используйте функцию trim ($ content), встроенную в PHP, которая удалит все пробелы слева и справа от строки. например, trim(' hello world! ')
вернет 'hello world!'