首页 > 解决方案 > 如何使用 txt 文件的文件列表作为数组变量?

问题描述

基本上我的问题是,我需要将一些 .json 文件合并为一个。值得庆幸的是,该代码已经完成并且运行良好。我的问题是,现在我需要能够轻松设置需要合并的文件,而无需每次都手动重写代码。

上传json文件时,我的服务器会自动将文件名添加到txt文件中。为了方便使用,都在同一个目录中。

假设我在一个目录中有 3 个 json 文件,1.json、2.json 和 3.json。

它将在该目录中自动填充一个名为“items.txt”的文件,其中所有 .json 文件名采用以下格式。

'1.json','2.json','3.json'

这是我的php代码,主要关注“$urls = array($items);” 部分:

$array = explode("\n", file_get_contents('items.txt'));
$items = implode($array);

$urls = array($items);
 $jobs = [];
 foreach ($urls as $url){
   $json = json_decode(file_get_contents($url), true);
   array_push($jobs, $json);
 }

 $unique = array();
 foreach ($jobs as $piece) {
    $unique = array_merge($unique, $piece);
 }
 $retour = json_encode($unique);
 print_r($retour);

不幸的是,这返回 null。但是,如果我手动将其更改为:

$urls = array( '1.json','2.json','3.json');

它按预期工作。

如果我执行“print_r($items);”,这是输出 :

'1.json','2.json','3.json'

所以我知道变量设置正确。我怎样才能输出这个变量并将其用作上面的 url 变量?

如果这很难理解,我很抱歉,如果需要,我很乐意提供更多拘留。我希望这是一项简单的任务,我非常感谢您的帮助!

标签: php

解决方案


由于您当前的文件内容是带有'引号的 CSV,因此您可以使用str_getcsv()

$urls = str_getcsv(file_get_contents('items.txt'), ",", "'");

或者,您可以始终将文件列表存储为 JSON,以与您使用 JSON 文件的事实保持一致。所以文件将是

[ "1.json", "2.json", "3.json" ]

$urls = json_decode(file_get_contents("a.json"), true));

推荐阅读