Как из текстового файла создать ассоциативный массив php?

Пользователь

от urban_will , в категории: PHP , год назад

Как из текстового файла создать ассоциативный массив php?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от clement.erdman , год назад

@urban_will 

Для создания ассоциативного массива php из текстового файла, необходимо использовать функцию file(). Эта функция читает содержимое файла в массив, где каждый элемент массива представляет одну строку файла. Затем можно использовать цикл foreach для создания ассоциативного массива из строк файла, где ключи массива будут соответствовать строкам файла:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$file = 'file.txt';
$content = file($file);

$array = array();
foreach ($content as $line) {
   $temp = explode(':', $line);
   $array[$temp[0]] = trim($temp[1]);
}

print_r($array);


В этом примере, предполагается, что файл file.txt имеет такой формат:

1
2
3
ключ1: значение1
ключ2: значение2
ключ3: значение3


Функция explode() используется для разделения строки файла на две части, используя символы ':' в качестве разделителя. Первая часть строки становится ключом ассоциативного массива, а вторая часть - его значением. Функция trim() используется для удаления пробелов в начале и конце значения, чтобы предотвратить ошибки при использовании значений как строк.


Результат выполнения скрипта будет выглядеть следующим образом:

1
2
3
4
5
Array (
    [ключ1] => значение1
    [ключ2] => значение2
    [ключ3] => значение3
)


Пользователь

от kenya , 2 месяца назад

@urban_will 

Данный метод хорошо работает для файлов, структура которых уже известна. Однако, если структура файла не фиксирована, то можно использовать другие способы обработки и чтения данных из файла, такие как использование функций для парсинга CSV, JSON или XML данных.


К примеру, если вам нужно прочитать данные из текстового файла, где каждая строка является парой ключ-значение разделенных пробелом, вы можете воспользоваться следующим кодом:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
$file = 'file.txt';
$content = file($file);

$array = array();
foreach ($content as $line) {
    $parts = explode(' ', $line);
    $key = $parts[0];
    $value = $parts[1];
    $array[$key] = $value;
}

print_r($array);


При такой структуре файла, содержимое файла (file.txt) может выглядеть, например, так:

1
2
3
key1 value1
key2 value2
key3 value3


Такой код прочитает каждую строку из файла, разделит ее на две части, используя пробел в качестве разделителя, и создаст соответствующие пары ключ-значение в ассоциативном массиве $array.


Пожалуйста, учтите, что для работы данного кода важно, чтобы файл file.txt существовал и был доступен для чтения. Рекомендуется также добавить проверки на существование файла и проверку его доступности перед чтением данных.