Я получаю некоторые данные из 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);
?>
Трудно представить, что api обслуживает только тысячи результатов, вам следует проверить, есть ли настройки для управления количеством результатов.
Можете ли вы подтвердить, что данные представляют собой строку с разделителями новой строки и запятыми? Хотя этот вопрос, вероятно, должен дать вам все подсказки к решению, которое вам нужно.
Вы можете просто explode строку в \n и взять последний элемент результирующего массива, или вы уже пробовали это?
так как его массив довольно прост ... получить array.length, предположим, его 100; затем, чтобы получить последние данные, просто выполните $ response [array.length-1]. Он даст вам последний массив, и это ваш последний результат
@JustCarty Jep. RiggsFolly Да, ваш ответ дал мне некоторые идеи, в каком направлении смотреть! Собираюсь попробовать. Спасибо.






Найдя ваш 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 можно было бы лучше обслуживать много! Большая часть этого кода представляет ответ разумно.
Спасибо. Это потрясающе!
Этот
print_rвыглядит сбивающим с толку ... Насколько я могу судить, API возвращает все это через запятую?