Php - только последний результат запроса api

Я получаю некоторые данные из api, но я просто хочу получить самые свежие данные.

Когда я печатаю данные, они выглядят так:

Array
(
    [curlResult] => Rank,Club,Country,Level,Elo,From,To
None,Ajax,NED,1,1069.13220215,1956-07-01,1956-09-02
None,Ajax,NED,1,1074.29101562,1956-09-03,1956-09-09
None,Ajax,NED,1,1084.49816895,1956-09-10,1956-09-23
None,Ajax,NED,1,1091.4354248,1956-09-24,1956-09-30 //this one
)

Это продолжается для тысяч результатов, но мне нужна только последняя строка (самая последняя). Итак, если бы результат был вышеупомянутым, я хочу получить все данные из строки, за которой стоит «// this one».

Это код, который я использую для получения данных:

<?php
function makeRequest($url, $callDetails = false)
{
  // Set handle
  $ch = curl_init($url);

  // Set options
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

  // Execute curl handle add results to data return array.
  $result = curl_exec($ch);
  $returnGroup = ['curlResult' => $result,];

  // If details of curl execution are asked for add them to return group.
  if ($callDetails) {
    $returnGroup['info'] = curl_getinfo($ch);
    $returnGroup['errno'] = curl_errno($ch);
    $returnGroup['error'] = curl_error($ch);
  }

  // Close cURL and return response.
  curl_close($ch);
  return $returnGroup;
}

$url = "http://api.website.com/Ajax";/* some url */
$response = makeRequest($url);

// $csv = array_map('str_getcsv', $response);
echo '<pre>';
print_r($response);

?>

Этот print_r выглядит сбивающим с толку ... Насколько я могу судить, API возвращает все это через запятую?

JustCarty 12.10.2018 10:37

Трудно представить, что api обслуживает только тысячи результатов, вам следует проверить, есть ли настройки для управления количеством результатов.

jeroen 12.10.2018 10:38

Можете ли вы подтвердить, что данные представляют собой строку с разделителями новой строки и запятыми? Хотя этот вопрос, вероятно, должен дать вам все подсказки к решению, которое вам нужно.

RiggsFolly 12.10.2018 10:41

Вы можете просто explode строку в \n и взять последний элемент результирующего массива, или вы уже пробовали это?

Karsten Koop 12.10.2018 10:50

так как его массив довольно прост ... получить array.length, предположим, его 100; затем, чтобы получить последние данные, просто выполните $ response [array.length-1]. Он даст вам последний массив, и это ваш последний результат

Rey Young 12.10.2018 10:52

@JustCarty Jep. RiggsFolly Да, ваш ответ дал мне некоторые идеи, в каком направлении смотреть! Собираюсь попробовать. Спасибо.

Awesom-o 12.10.2018 10:55
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
6
136
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Найдя ваш API в Интернете, я смог создать для вас следующий ответ:

$resp = makeRequest('http://api.clubelo.com/Wolves')['curlResult'];
$result = array_filter(explode("\n", $resp), function ($record) {
    return !empty($record);
});

$headings = explode(',', reset($result));
$record = explode(',', end($result));

$last = array_combine($headings, $record);

$resp состоит из вызова функции, а затем я мгновенно получаю доступ к результату операции cURL.

$result использует функцию explode для разделения каждой строки ответа API на свою собственную «запись».

$headings и $record просто разделяют ответ API на соответствующие «поля». reset - это функция PHP, которая сбрасывает внутренний указатель на начало массива и возвращает этот элемент. end является противоположностью reset и устанавливает внутренний указатель на конец массива и возвращает этот элемент.

$last будет последней записью из API с $headings, установленным в качестве ключей массива со значением, соответствующим значению из ответа.

Это вне вашего контроля, но этот API можно было бы лучше обслуживать много! Большая часть этого кода представляет ответ разумно.

Спасибо. Это потрясающе!

Awesom-o 12.10.2018 11:45

Другие вопросы по теме

Похожие вопросы