基本上我的问题是,我需要将几个.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变量?
很抱歉,如果这很难理解,我很乐意在需要时给予更多拘留。我希望这是一件容易的事,非常感谢您的帮助!
答案 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);