将多个艺术家信息从API存储到文件中(PHP)

时间:2016-01-20 21:53:34

标签: php arrays file api

我真的需要帮助。我根据艺术家姓名($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。

希望这是有道理的。 :)

1 个答案:

答案 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将覆盖现有文件(非常确定)。但您最好的选择是使用数据库。如果您不能这样做,那么我建议您在执行此操作时阻止写入文件我建议您使用fopenflockfwrite然后{{1} }