php - php - 只有来自 api 请求的最后一个结果
问题描述
我从 api 获得了一些数据,但我只是想获得最新的数据。
当我 print_r 的数据看起来像这样:
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 后,我能够为您创建此答案:
$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 可以提供更好的服务!这段代码中的大部分都在合理地呈现响应。
推荐阅读
- python - PYSPARK UDF 根据日期范围展开记录
- javascript - Vue CLI - TypeError: Cannot read properties of undefined (reading '1')
- r - 如何将循环与 geom_vline 和 facet_wrap 一起使用?
- typescript - jest with vue3 typescript TypeError: Cannot read property 'deep' of undefined
- docker - 为什么 Drupal for Docker 从服务器返回空回复?
- performance - 高负载数据更新架构
- javascript - AudioWorklet 中的 new Function()
- c# - 每次数字在 100 到 9000 之间结束时,末尾总是一个零,当 1000 内的数字为高时会发生错误
- url - php中的重定向URL捕获
- python - 如何在python中建立两个非时间矩阵之间的自相关