PHP-仅API请求的最后结果

时间:2018-10-12 08:34:02

标签: php arrays curl

我从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);

?>

1 个答案:

答案 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函数,它将内部指针重置为数组的开头并返回该项目。
endreset相反,它将内部指针设置为数组的末尾并返回该项目。

$last将是API中的最后一条记录,其中$headings被设置为数组键,其值是响应中的相应值。

这是您无法控制的,但是可以更好地为该API提供更好的服务!大部分代码使响应明智地呈现。