Построение массива PHP из отдельных файлов

Я новичок в этом, но постарался узнать как можно больше, прежде чем задавать вопросы здесь. К сожалению, маловероятно, что у меня есть словарь, чтобы задать ясный вопрос. Извинения и благодарность заранее.

Возможно ли построить массив из данных из нескольких файлов? Скажем, у меня была серия текстовых файлов, и в первой строке каждого файла было три тега, разделенных запятыми, которые я хотел бы хранить в массиве всех тегов из всех текстовых файлов, как бы я мог это сделать

Например, файл может содержать теги, заголовок страницы и ее содержимое:

social movements, handout, international

Haiti and the Politics of Resistance

Haiti, officially the Republic of Haiti, is a Caribbean country. It occupies the western, smaller portion of the island of Hispaniola, in the Greater Antillean archipelago, which it shares with the Dominican Republic. Ayiti (land of high mountains) was the indigenous Taíno or Amerindian name for the island. The country highest point is Pic la Selle, at 2,680 metres (8,793 ft). The total area of Haiti is 27,750 square kilometres (10,714 sq mi) and its capital is Port-au-Prince. Haitian Creole and French are the official languages.

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

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

$content = file('mytextfilename.txt');
//First line: $content[0];
echo $content[0];

что я нашел здесь. После чего материал о взрыве, который я нашел здесь.

$content = explode(",",$content);
print $content[0];

Это не сработало, возможно, очевидно, но я не в состоянии понять, почему нет. Если я не объяснил себя хорошо, тогда спросите, чтобы я попытался прояснить мой вопрос.

Спасибо за вашу помощь, Адам.

Ответ 1

Вы можете попробовать:

$tags = array_reduce(glob(__DIR__ . "/*.txt"), function ($a, $b) {
    $b = explode(",", (new SplFileObject($b, "r"))->fgets());
    return array_merge($a, $b);
}, array());

// To Remove Spaces
$tags = array_map("trim", $tags);

// To make it unique
$tags = array_unique($tags);

print_r($tags);

Поскольку вы прорезываете зубы, вы можете рассмотреть эту версию

$tags = array(); // Define tags
$files = glob(__DIR__ . "/*.txt"); // load all txt fules in current folder

foreach($files as $v) {
    $f = fopen($v, 'r'); // read file
    $line = fgets($f); // get first line
    $parts = explode(",", $line); // explode the tags
    $tags = array_merge($tags, $parts); // merge parts to tags
    fclose($f); // closr file
}

// To Remove Spaces
$tags = array_map("trim", $tags);

// To make it unique
$tags = array_unique($tags);

print_r($tags);