我正在使用BooksRun API,并且无法使用PHP foreach显示从API返回的任何数据。我的代码如下。预先感谢!
<?php
//PARAMETERS
$url = 'https://booksrun.com/api/v3/price/buy/0134093410?key=0t8rfbno7qc4lmaav9yz';
$headers = array(
"Content-type: application/json;charset=\"utf-8\"",
"Accept: text/xml",
"Cache-Control: no-cache",
"Pragma: no-cache",
"SOAPAction: \"run\""
);
$cURL = curl_init();
curl_setopt($cURL, CURLOPT_URL, $url);
curl_setopt($cURL, CURLOPT_HTTPGET, true);
curl_setopt($cURL, CURLOPT_HTTPHEADER, $headers);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($cURL);
curl_close($cURL);
//Json Data decoded on PHP object
$obj_data = json_decode($result);
echo '<div>' . 'start : '.$obj_data->result->status . '</div>';
//echo '<div>' . 'date: '.$obj_data->result->offers->booksrun->new->price . '</div>';
//echo '<div>' . 'date: '.$obj_data->result->marketplace->used->price . '</div>';
foreach ($obj_data->result as $book) {
//fetch object data
echo '<div>' . 'seller: '.$book->offers->booksrun->rent->price . '</div>';
echo '<div>' . 'date: '.$book->marketplace->used->price . '</div>';
}
?>
只需进行以下更改:
echo '<div>' . 'seller: '.$obj_data->result->offers->booksrun->rent->{"35"}->price . '</div>';
echo '<div>' . 'date: '.$obj_data->result->offers->marketplace[0]->used->price . '</div>';
$obj_data->result->offers->marketplace
是一个数组,因此可以在其上循环。
不需要遍历结果对象,因为它只包含一项。
如果添加,可能会有用
curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, false);
之后
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, 1);
我认为您需要更改代码,因为json中有一个数组也许您可以更改为此代码]
<?php
//PARAMETERS
$url = 'https://booksrun.com/api/v3/price/buy/0134093410?key=0t8rfbno7qc4lmaav9yz';
$headers = array(
"Content-type: application/json;charset=\"utf-8\"",
"Accept: text/xml",
"Cache-Control: no-cache",
"Pragma: no-cache",
"SOAPAction: \"run\""
);
$cURL = curl_init();
curl_setopt($cURL, CURLOPT_URL, $url);
curl_setopt($cURL, CURLOPT_HTTPGET, true);
curl_setopt($cURL, CURLOPT_HTTPHEADER, $headers);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($cURL);
curl_close($cURL);
//Json Data decoded on PHP object
$obj_data = json_decode($result);
echo '<div>' . 'start : '.$obj_data->result->status . '</div>';
//echo '<div>' . 'date: '.$obj_data->result->offers->booksrun->new->price . '</div>';
//echo '<div>' . 'date: '.$obj_data->result->marketplace->used->price . '</div>';
//fetch object data
foreach ($obj_data->result->offers->booksrun->rent as $rent) {
echo '<div>' . 'seller: '.$rent->price . '</div>';
}
foreach ($obj_data->result->offers->marketplace as $marketplace) {
echo '<div>' . 'date: '.$marketplace->used->price. '</div>';
}
?>
代码中的问题是您想打开一个对象,但实际上它是一个数组