如何在JSON API的PHP中使用Curl返回一些变量
我的工作代码有问题,我实际上使用了停车场信息的JSON API: 当我使用curl获取JSON时,如下所示:如何在JSON API的PHP中使用Curl返回一些变量,php,arrays,json,api,curl,Php,Arrays,Json,Api,Curl,我的工作代码有问题,我实际上使用了停车场信息的JSON API: 当我使用curl获取JSON时,如下所示: $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://demo.kepler-soft.net/api/v2.3/api-key/"key"/vehicles/?brand=Peugeot"); curl_setopt($ch, CURLOPT_HTTPGET); curl_setopt($ch, CURLOP
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://demo.kepler-soft.net/api/v2.3/api-key/"key"/vehicles/?brand=Peugeot");
curl_setopt($ch, CURLOPT_HTTPGET);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//Decode and display the output
$result = curl_exec($ch);
curl_close($ch);
$data = json_decode($result,true);
var_dump($data);
它返回给我:
array(7) { [0]=> array(58) { ["totalResult"]=> string(1) "7" ["nbPageList"]=> int(1) ["createdAt"]=> string(24) "2018-05-09T10:25:15+0200" ["updatedAt"]=> string(24) "2018-05-09T10:28:47+0200" ["reference"]=> string(6) "1aqyy0" ["reportNumber"]=> int(6) ["country"]=> string(2) "FR" ["state"]=> string(18) "vehicle.state.parc" ["brand"]=> array(2) { ["reference"]=> string(13) "571a35428256b" ["name"]=> string(7) "PEUGEOT" } ["model"]=> array(2) { ["reference"]=> string(13) "59d5e93c66fcd" ["name"]=> string(3) "308" } ["version"]=> array(2) { ["reference"]=> string(13) "5a16a5018cd0a" ["name"]=> string(37) "308 1.6 BlueHDi 120ch S&S EAT6 Allure" } ["typeVoVn"]=> array(2) { ["reference"]=> string(13) "56f50a800ff53" ["name"]=> string(2) "VO" } ["vehicleType"]=> array(2) { ["reference"]=> string(13) "587e9d16446ec" ["name"]=> string(2) "VP" } ........
我知道它是一个数组,一辆车就像一个“对象”,所以我想让所有的车只得到“品牌”、“型号”等,并把它放在我网站上的卡片上
我已经读过一些问题,比如:
但这对我不起作用:(
我尝试了很多事情,比如:
var_dump($data["brand"]["name"]); etc...
或
所以如果有人能回答我,那将对我帮助很大
我希望我的帖子很清楚,我的英语不是很好,这是我在stackoverflow上的第一篇帖子
泰西
JSON API响应示例:
[
{
totalResult:"37",
nbPageList:4,
createdAt:"2018-05-09T10:25:15+0200",
updatedAt:"2018-05-09T10:28:47+0200",
reference:"1aqyy0",
reportNumber:6,
country:"FR",
state:"vehicle.state.parc",
brand:{
reference:"571a35428256b",
name:"PEUGEOT"
},
model:{
reference:"59d5e93c66fcd",
name:"308"
},
version:{
reference:"5a16a5018cd0a",
name:"308 1.6 BlueHDi 120ch S&S EAT6 Allure"
},
typeVoVn:{
reference:"56f50a800ff53",
name:"VO"
},
vehicleType:{
reference:"587e9d16446ec",
name:"VP"
},
vin:"VF5JUHG5696YTVRFV",
licenseNumber:"AZ-569-EE",
energy:{
reference:"56f524a90c378",
name:"Diesel"
},
firstHand:false,
bodywork:{
reference:"56f52328c21ef",
name:"Berline"
},
gearbox:{
reference:"56f50a7f3074f",
name:"Boîte automatique"
},
color:{
reference:"56f50a7e6d344",
name:"Blanc"
},
colorAccuracy:"vehicle.color_accuracy.glossy",
pricePublicWithoutTax:"12000.00",
pricePublic:"12000.00",
priceSellerWithoutTax:"12000.00",
priceSeller:"12000.00",
dateOfDistribution:"2017-03-25T00:00:00+0100",
year:"2017",
distanceTraveled:120000,
distanceTraveledWarranty:false,
gallery:[
{
photo:"https://demo.kepler-soft.net/uploads/demo/media/0001/45/109ce27d0e08b98a028e2a7dc47c30f9a66cc813.jpeg",
large:"https://demo.kepler-soft.net/uploads/demo/media/0001/45/thumb_44888_admin_large.jpeg",
big:"https://demo.kepler-soft.net/uploads/demo/media/0001/45/thumb_44888_admin_big.jpeg",
thumb:"https://demo.kepler-soft.net/uploads/demo/media/0001/45/thumb_44888_admin_small.jpeg",
position:0,
reference:"d04b5bf398ef9a025251e1aaa8b4893b2bf71ba5",
updatedAt:"2018-05-09T10:27:50+0200"
},
{
photo:"https://demo.kepler-soft.net/uploads/demo/media/0001/45/1fccf17bffe828898ca3e6d7ddfd769643b890d8.jpeg",
large:"https://demo.kepler-soft.net/uploads/demo/media/0001/45/thumb_44889_admin_large.jpeg",
big:"https://demo.kepler-soft.net/uploads/demo/media/0001/45/thumb_44889_admin_big.jpeg",
thumb:"https://demo.kepler-soft.net/uploads/demo/media/0001/45/thumb_44889_admin_small.jpeg",
position:1,
reference:"85fc496dbd5b2aa5b10e34a128d065c3c838a02e",
updatedAt:"2018-05-09T10:27:53+0200"
},
{
photo:"https://demo.kepler-soft.net/uploads/demo/media/0001/45/cfe766347a19c0e215e58114b1cb9cf3725f9710.jpeg",
large:"https://demo.kepler-soft.net/uploads/demo/media/0001/45/thumb_44890_admin_large.jpeg",
big:"https://demo.kepler-soft.net/uploads/demo/media/0001/45/thumb_44890_admin_big.jpeg",
thumb:"https://demo.kepler-soft.net/uploads/demo/media/0001/45/thumb_44890_admin_small.jpeg",
position:2,
reference:"455d14dda58e59fe73782bdc21c18c43c173c73b",
updatedAt:"2018-05-09T10:27:56+0200"
},
{
photo:"https://demo.kepler-soft.net/uploads/demo/media/0001/45/8c42508ba993f603f3c4d3875d41390a3327b31c.jpeg",
large:"https://demo.kepler-soft.net/uploads/demo/media/0001/45/thumb_44891_admin_large.jpeg",
big:"https://demo.kepler-soft.net/uploads/demo/media/0001/45/thumb_44891_admin_big.jpeg",
thumb:"https://demo.kepler-soft.net/uploads/demo/media/0001/45/thumb_44891_admin_small.jpeg",
position:3,
reference:"1de79d822e36061df0fcf7b6ed010b02202792e1",
updatedAt:"2018-05-09T10:27:59+0200"
},
{
photo:"https://demo.kepler-soft.net/uploads/demo/media/0001/45/0b42463c944706e24c39c1b939922379075af47e.jpeg",
large:"https://demo.kepler-soft.net/uploads/demo/media/0001/45/thumb_44892_admin_large.jpeg",
big:"https://demo.kepler-soft.net/uploads/demo/media/0001/45/thumb_44892_admin_big.jpeg",
thumb:"https://demo.kepler-soft.net/uploads/demo/media/0001/45/thumb_44892_admin_small.jpeg",
position:4,
reference:"7d26039416029e2446c0c435f42facd62264c912",
updatedAt:"2018-05-09T10:28:02+0200"
}
],
vo:507,
gender:{
reference:"56f50a7ed5c2c",
name:"VP"
},
taxHorsepower:6,
horsepower:120,
carEngine:1560,
doors:5,
seats:5,
urbanConsumption:4.1,
extraUrbanConsumption:3.4,
mixteConsumption:3.6,
extraUrbanKmConsumption:95,
isWorkshop:false,
isRental:false,
isRecoverableVat:false,
warrantyType:"vehicle.warranty.type.with",
warrantyOrganization:"VOTH",
warrantyLabel:{
reference:"570b8682b5b53",
name:"Moteur, boite, pont"
},
warrantyKilometric:5000,
warrantyDuration:3,
supplier:{
phoneNumber:"02 51 98 09 09",
address:{
address:"1 Bd Jean moulin",
postalCode:"44100",
city:"NANTES",
country:"FR"
},
legalFormContact:"SARL",
corporateNameContact:"KEPLER AUTOS",
commonName:"KEPLER AUTOS",
siret:"50822227000011",
tvaIntracom:"FR 15 8025733"
},
expertise:{
elementList:[
]
},
origin:"Négociant",
valueOption:"12308.00",
valueNew:"30200.00",
valueNewOption:"42508.00",
equipmentStandard:[
它返回一个数组列表,因此您可能希望使用以下内容:
foreach ($data as $vehicle) {
var_dump($vehicle);
}
或:
下面是一个演示该行为的小示例代码
$array = array('car1' => array('totalResult' => 7, 'nbPageList' => 1, 'brand' => array(' reference'=> "571a35428256b", 'name' => "PEUGEOT" )),
'car2' => array('totalResult' => 1, 'nbPageList' => 1, 'brand' => array(' reference'=> "571a35428376b", 'name' => "RENAULT" )));
var_dump($array);
foreach ($array as $vehicleName => $vehicleDetails) {
var_dump($vehicleDetails);
}
您可以使用下面的代码实现这一点:
<?php
$data = array_map(function($item) {
return [
'brand' => $item['brand']['name'],
'model' => $item['model']['name'],
//add any other fields here
];
}, $data);
你能发布完整的json吗,&这不是使用curl的问题,更多关于如何解析json的内容,如果你刚刚发布了API密钥,你会想删除/撤销它。$data[0][“brand”][“name”]
-主项是一个索引数组,所以你想循环$data[$i]
,其中$i=0到nI无法发布完整的json,太长了,这个测试api中有37个车辆,thx我将隐藏我的api keyHi Florian,第一个thx为了帮助,我知道我需要做一个循环,但是我如何定义$vehicle类似于“数组中的一个数组”,我必须这样做:$vehicle=$data[]以前?您也可以执行类似于foreach($key=>value)的操作
并在以下代码中使用$value
。阅读php.net[foreach loop]()中的文档了解更多信息。您好,thx帮助@Bushikot,我将您的代码改编为我的,我认为它是有效的,您知道如何隐藏“数组(7){[0]=>array(2){[“brand”]=>string(7)”用于打印“标致”或“2008”?Thx很多!@Tensei当然,检查上面的示例。我刚刚修复了它。我还强烈建议您阅读更多关于PHP数组及其工作原理的信息。在$data中,您可以看到类似[{..},{..},{..}的结构。这意味着您有一个对象数组,您可以通过其索引访问任何对象,该索引从0开始,以(对象数\u-1)结束。然后,您可以通过->
操作符或与数组相同的方式,使用['field\u-name']
,访问任何对象属性。因此,如果您想获得第一个对象品牌名,它将是$data[0]['brand']['name]或$data[0]->brand->name.Thx再次感谢您的帮助,我将了解有关阵列的更多信息,我没有看到您上一次对仅打印的“标致”进行的更改。Thx很多!哦,$item['brand']
更改为$item['brand']['name']
,与“model”相同。
$array = array('car1' => array('totalResult' => 7, 'nbPageList' => 1, 'brand' => array(' reference'=> "571a35428256b", 'name' => "PEUGEOT" )),
'car2' => array('totalResult' => 1, 'nbPageList' => 1, 'brand' => array(' reference'=> "571a35428376b", 'name' => "RENAULT" )));
var_dump($array);
foreach ($array as $vehicleName => $vehicleDetails) {
var_dump($vehicleDetails);
}
<?php
$data = array_map(function($item) {
return [
'brand' => $item['brand']['name'],
'model' => $item['model']['name'],
//add any other fields here
];
}, $data);