我真的需要帮助。我根据艺术家姓名($artist_name = $_GET['artistname']
)使用API收集艺术家信息。
我需要将API结果添加到数组中并将其存储到文件(而不是数据库)中。随着越来越多的艺术家作品被添加到该文件中,该文件将不断增长。
一旦我在文件中有一个数组,我需要能够读取它并解析它。这样我就可以在不重复使用API的情况下显示信息。
我已经想出如何使用一个条目将数组添加到文件中,但是如何在同一个数组中添加更多的键呢?
这就是我现在正在使用的......
//ARRAY
$artist_info_location_array = array($artist_name => $location_entry);
//FILE
$artist_location_file = get_template_directory()."/Database/Artists/info-location.json";
//GET ARRAY FILE
$get_location_array[] = json_decode(file_get_contents($artist_location_file), true);
if (is_array($get_location_array)) {
if (!array_key_exists($artist_name, $get_location_array)) {
file_put_contents($artist_location_file, json_encode($artist_info_location_array));
}
}
将其打印到文件中:
{"Imagine Dragons":"Las Vegas, NV, US"}
很酷,但我需要能够为这个SAME ARRAY添加更多艺术家。因此,结果应该与另一位艺术家一起添加:
{"Imagine Dragons":"Las Vegas, NV, US", "Adele":"London, UK"}
这表明Imagine Dragons和Adele都加入了同一个阵列。
有人可以帮助我吗"追加"或者将额外的键和值添加到与添加到文件中相同的数组中?
感谢。
编辑1(回应马丁): 我在页面一侧有一个面板。此面板将显示有关已搜索的艺术家的相关信息。让我们说你搜索艺术家"阿黛尔"。 $ artist_name 将= 阿黛尔。
假设我想存储所有艺术家位置,我会使用我发布的示例将每个艺术家位置存储在名为 info-location.json ($ artist_location_file)的文件中。
因此,每次加载艺术家页面时,艺术家名称和位置都会添加到文件中的数组中。
如果我的示例没有任何意义,请向我展示如何在ONE ARRAY中添加多个条目的示例。我正在使用API,并希望缓存此信息,而不是在每次加载时请求API。
希望这是有道理的。 :)
答案 0 :(得分:2)
我可能误解了你的问题,但如果你只是想读一个json文件,如果它不存在就添加一个关联数组键,然后把它放回到json文件中为什么你不做这样的事情:
if (is_array($get_location_array)) {
if (!array_key_exists($artist_name, $get_location_array)) {
$get_location_array[$artist_name] = $location;
file_put_contents($artist_location_file, json_encode($artist_info_location_array));
}
}
file_put_contents
将覆盖现有文件(非常确定)。但您最好的选择是使用数据库。如果您不能这样做,那么我建议您在执行此操作时阻止写入文件我建议您使用fopen
,flock
和fwrite
然后{{1} }