如何使用txt文件的文件列表作为数组变量?

时间:2019-08-30 07:03:26

标签: php

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

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

说我在一个目录中有3个json文件:1.json,2.json和3.json。

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

  

'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);

不幸的是,它返回空值。但是,如果我手动将其更改为此:

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

它按预期工作。

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

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

所以我知道变量设置正确。我如何能够输出此变量并将其用作上面的url变量?

很抱歉,如果这很难理解,我很乐意在需要时给予更多拘留。我希望这是一件容易的事,非常感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

由于您当前的文件内容是带有'作为附件引号的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));

答案 1 :(得分:0)

您可以尝试使用匹配的正则表达式,例如

$re = '/\d+\.json/m';
$str = "'10.json','2.json','3.json'";

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);