#php #json #parsing #doi
#php #json #Синтаксический анализ #doi
Вопрос:
У меня есть короткий файл JSON из URL
https://api.crossref.org/works?query.title=Tuberculosis drugamp;filter=type:journal-article,from-print-pub-date:2010,until-print-pub-date:2010amp;select=DOIamp;rows=3
Я использовал этот код для получения total-results
и списка DOI
значений
$crossref_api_url = 'https://api.crossref.org/works?query.title=Tuberculosis drugamp;filter=type:journal-article,from-print-pub-date:2010,until-print-pub-date:2010amp;select=DOIamp;rows=2';
$JSON = file_get_contents($crossref_api_url);
$Array = json_decode($JSON, true);
$items_list = $message->items;
$totalItems = $message->total-results;
echo $totalItems;
for($i = 0; $i < count($items_list ); $i ) {
$doi = $items_list[$i]->items->DOI;
echo $doi;
}
Появится результат 0
. Нет totalItems
значения, DOI
списка.
Пожалуйста, помогите мне найти ошибку в моем коде. Спасибо
Комментарии:
1.
$message
? Где это определено ?2. И структура, которую вы получили, является
{ "message": { "items": [{ "DOI": "10.1111/j.1365-2958.2010.07218.x"}
, но вы пытаетесь получить доступ к message-> items-> элементы.
Ответ №1:
Правильный код:
$crossref_api_url = 'https://api.crossref.org/works?query.title=Tuberculosis drugamp;filter=type:journal-article,from-print-pub-date:2010,until-print-pub-date:2010amp;select=DOIamp;rows=2';
$JSON = file_get_contents($crossref_api_url);
$Array = json_decode($JSON, true); // with `true` you decode to ARRAY
$items_list = $Array['message']['items'];
$totalItems = $Array['message']['total-results'];
echo $totalItems;
foreach ($items_list as $item) {
echo $item['DOI'];
}
Комментарии:
1. Спасибо. Это работает хорошо, но
$totalItems
не отображается.2. Это так, проверьте свой код еще раз. Или проверьте выходные данные вашего кода. Для добавления новой строки
echo PHP_EOL;