如何在JSON API的PHP中使用Curl返回一些变量

如何在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

我的工作代码有问题,我实际上使用了停车场信息的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, 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);