【发布时间】:2018-08-20 22:08:47
【问题描述】:
我是 API 集成和 PHP 的新手。我最近在我的应用程序中集成了一个 VIN 解码器。在输入框中输入车辆的VIN,点击提交,返回该车辆的相关信息。
问题是某些车辆返回的数据比其他车辆多。奥迪 A4,VIN:WAUBFAFL6FA058452,返回所有字段的数据。但是,保时捷 911,VIN:WP0AB29954S696067,仅返回部分字段的数据。
这是输出的样子。
奥迪 A4:
VIN: WAUBFAFL6FA058452
Engine-
Engine Displacement 1: 2 liters
Engine Displacement 2: 1984 cc's
Engine Displacement 3: 121.071108283 ci's
Engine Size: 4 cylinders
Horsepower: 220 hp
Kilowatts: 164.0540 kw
Engine Manufacturer: Audi
Engine Model: Flex Fuel Capable engine
Primary Fuel Type: Gasoline
Secondary Fuel Type: Ethanol (E85)
保时捷 911:
VIN: WP0AB29954S696067
Engine-
Engine Displacement 1: 3.6 liters
Engine Displacement 2: 3600.0 cc's
Engine Displacement 3: 219.68547874103 ci's
Engine Size: 6 cylinders
Horsepower: 415 hp
Kilowatts: 309.4655 kw
Primary Fuel Type: Gasoline
我要做的是消除空数据字段导致的数据间隙。因为没有“发动机制造商和发动机型号”的数据,所以输出数据存在差距。我怎样才能消除这个差距?因此,保时捷 911 所需的输出如下所示:
所需的保时捷输出:
VIN: WP0AB29954S696067
Engine-
Engine Displacement 1: 3.6 liters
Engine Displacement 2: 3600.0 cc's
Engine Displacement 3: 219.68547874103 ci's
Engine Size: 6 cylinders
Horsepower: 415 hp
Kilowatts: 309.4655 kw
Primary Fuel Type: Gasoline
这是我的 php 代码:
<?php
$vin = $_POST["b12"];
if ($vin) {
$postdata = http_build_query([
'format' => 'json',
'data' => $vin
]
);
$opts = [
'http' => [
'method' => 'POST',
'content' => $postdata
]
];
$apiURL = "https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVINValuesBatch/";
$context = stream_context_create($opts);
$fp = fopen($apiURL, 'rb', false, $context);
$line_of_text = fgets($fp);
$json = json_decode($line_of_text, true);
fclose($fp);
$data = array();
foreach ($json['Results'][0] as $k => $v){
if ($k == "DisplacementCC"){
$k = "Engine Displacement 2";
}
if ($k == "DisplacementCI"){
$k = "Engine Displacement 3";
}
if ($k == "DisplacementL"){
$k = "Engine Displacement 1";
$v = round($v,1);
}
if ($k == "EngineKW"){
$k = "Kilowatts";
}
if ($k == "EngineManufacturer"){
$k = "Engine Manufacturer";
}
if ($k == "EngineModel"){
$k = "Engine Model";
}
if ($k == "FuelTypePrimary"){
$k = "Primary Fuel Type";
}
if ($k == "FuelTypeSecondary"){
$k = "Secondary Fuel Type";
}
if ($k == "EngineHP"){
$k = "Horsepower";
}
if ($k == "EngineCylinders"){
$k = "Engine Size";
}
if (!empty($v)) {
$data[$k] = ($k).": ".($v);
}
}
echo $data['VIN'].'<br /><br/>';
echo "Engine-".'<br /><br />';
echo $data['Engine Displacement 1']. " liters". '<br />';
echo $data['Engine Displacement 2']. " cc's". '<br />';
echo $data['Engine Displacement 3']. " ci's". '<br />';
echo $data['Engine Size']. " cylinders". '<br />';
echo $data['Horsepower']." hp". '<br />';
echo $data['Kilowatts']." kw". '<br />';
echo $data['Engine Manufacturer']. '<br />';
echo $data['Engine Model']. '<br />';
echo $data['Primary Fuel Type']. '<br />';
echo $data['Secondary Fuel Type']. '<br /><br />';
}
else {
echo 'No Vin Inputted';
}
?>
【问题讨论】:
-
只能说你对样车的品味还不错:)
-
我不是已经回答了吗? stackoverflow.com/a/51903267/2943403 您可以将
$units字符串添加到以相同方式实现的另一个查找数组中。
标签: php html api line-breaks