PHP Array_combine неопределенный индекс

0

Я хочу объединить два массива, один как ключ, а другой как данные. Однако, когда я 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." ...)

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

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

Теги:
arrays
indexing
offset
undefined-index

2 ответа

2
Лучший ответ

Этот дополнительный символ является символом новой строки. 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);
  • 0
    Спасибо! Это решило это полностью!
0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню