Мне очень нужна помощь. Я использую API для сбора информации о художнике в зависимости от имени исполнителя ($artist_name = $_GET['artistname']
).Хранение информации о нескольких художниках от API в файл (PHP)
Мне нужно добавить результаты 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"}
Это круто, но мне нужно, чтобы иметь возможность добавлять больше художников это ТАКОЕ МАССА. Таким образом, результат должен выглядеть следующим образом:
{"Imagine Dragons":"Las Vegas, NV, US", "Adele":"London, UK"}
Это показывает, что Драгоценности Драконов и Адель оба добавлены в тот же массив.
Может ли кто-нибудь помочь мне «добавить» или добавить дополнительные ключи и значения в тот же массив, что и в файл?
Спасибо.
EDIT 1 (В ответ на Мартин): У меня есть панель на стороне данной страницы. На этой панели будет отображаться соответствующая информация о художнике, который был искален. Предположим, вы ищете художника «Адель». $ artist_name есть = Adele.
Скажем, я хотел бы сохранить все места исполнителя, я бы использовал пример, который я разместил, чтобы хранить каждое местоположение исполнителя в файле с именем info-location.json ($ artist_location_file).
Таким образом, каждый раз, когда загружается страница исполнителя, имя и местоположение исполнителя добавляются в массив в файле.
Если мой пример не имеет никакого смысла, пожалуйста, покажите мне пример того, как добавить несколько записей в ОДИН МАССИВ. Я использую API и хотел бы кэшировать эту информацию для использования вместо запроса API при каждой загрузке.
Надеюсь, что это имеет смысл. :)
[Руководство] (http://php.net /manual/en/function.file-put-contents.php) Параметр 3 установлен в 'FILE_APPEND'. Вся идея кажется очень ханкой. – RiggsFolly
Я сделал это, и флаг FILE_APPEND фактически добавляет еще один« массив »в конец файл. Например: {«Imagine Dragons»: «Las Vegas, NV, US»} {«Адель»: «Лондон, Великобритания»}. Мне нужны другие художники, добавленные в фактический массив. Что означает хинки? Если есть лучший способ, пожалуйста, поделитесь со мной :) – anthonyCam
Что определяет, что такое массив, как бы вы установили, какие художники принадлежат к массивам, и что еще более важно, как ваш файл установит это? Если у вас есть только один массив мест/художников, вы можете просто добавить новые и предположить, что они все в одном массиве? – Martin