我从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”的行中获取所有数据。
这是我用来获取数据的代码:
<?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);
?>
答案 0 :(得分: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提供更好的服务!大部分代码使响应明智地呈现。