我建议使用“主”数组来过滤和准备按类别分组的数据。请参阅内嵌注释以获取更多说明:
Code: (Demo https://3v4l.org/o9WSN)
你的主阵:
$master = [
"General" => [
"Make" => "",
"ModelYear" => "",
"Model" => "",
"BodyClass" => "",
"Doors" => "",
"Series" => "",
"VehicleType" => ""
],
"Safety" => [
"AirBagLocCurtain" => "",
"AirBagLocFront" => "",
"AirBagLocSide" => "",
"SeatBeltsAll" => ""
],
"Engine" => [
"DisplacementCC" => "",
"DisplacementCI" => "",
"DisplacementL" => "",
"EngineCylinders" => "",
"EngineHP" => "",
"EngineKW" => "",
"EngineManufacturer" => "",
"EngineModel" => "",
"TransmissionStyle" => "",
"OtherEngineInfo" => "",
"FuelTypePrimary" => "",
"FuelTypeSecondary" => ""
],
"Factory" => [
"Manufacturer" => "",
"ManufacturerId" => "",
"PlantCity" => "",
"PlantCountry" => ""
],
"Other" => [
"ErrorCode" => "",
"TPMS" => ""
]
];
加工:
foreach ($master as $category => &$items) { // allow modification of $master data with &
foreach ($items as $k => &$v) { // allow modification of $master data with &
if (isset($json['Results'][0][$k]) && strlen($json['Results'][0][$k])) { // only bother to process/display desired keys and non-empty values
$new = $json['Results'][0][$k];
if ($k == "DisplacementCC") {
$v = "Engine Displacement 2: $new cc's";
} elseif ($k == "DisplacementCI") {
$v = "Engine Displacement 3: $new ci's";
} elseif ($k == "DisplacementL") {
$v = "Engine Displacement 1: " . round($new, 1) . " liters";
} elseif ($k == "EngineKW") {
$v = "Kilowatts: $new kw";
} elseif ($k == "EngineManufacturer") {
$v = "Engine Manufacturer: $new";
} elseif ($k == "EngineModel") {
$v = "Engine Model: $new";
} elseif ($k == "FuelTypePrimary") {
$v = "Primary Fuel Type: $new";
} elseif ($k == "FuelTypeSecondary") {
$v = "Secondary Fuel Type: $new";
} elseif ($k == "EngineHP") {
$v = "Horsepower: $new hp";
} elseif ($k == "EngineCylinders") {
$v = "Engine Size: $new cylinders";
} else {
$v = "$k: $new";
}
} else {
unset($master[$category][$k]); // remove unwanted element from master
}
}
}
unset($items, $v); // just as a precaution to eliminate the referenced variables
echo "<div id=\"VIN\">{$json['Results'][0]['VIN']}</div>\n\n";
// now iterate the updated $master multi-dimensional array and only display the "good stuff"
foreach ($master as $category => $items) {
if (!empty($items)) { // only display categories & rows of data when the category holds 1 or more values
echo "<div class=\"group\">$category -</ br>";
foreach ($items as $v) {
echo "<div class=\"row\">$v</div>";
}
echo "</div>";
}
}
Output:
<div id="VIN">WAUBFAFL6FA058452</div>
<div class="group">General -</ br>
<div class="row">Make: AUDI</div>
<div class="row">ModelYear: 2015</div>
<div class="row">Model: A4</div>
<div class="row">BodyClass: Sedan/Saloon</div>
<div class="row">Doors: 4</div>
<div class="row">Series: Premium quattro</div>
<div class="row">VehicleType: PASSENGER CAR</div>
</div>
<div class="group">Safety -</ br>
<div class="row">AirBagLocCurtain: All Rows</div>
<div class="row">AirBagLocFront: 1st Row (Driver & Passenger)</div>
<div class="row">AirBagLocSide: 1st Row (Driver & Passenger)</div>
<div class="row">SeatBeltsAll: Manual</div>
</div>
<div class="group">Engine -</ br>
<div class="row">Engine Displacement 2: 1984 cc's</div>
<div class="row">Engine Displacement 3: 121.071108283 ci's</div>
<div class="row">Engine Displacement 1: 2 liters</div>
<div class="row">Engine Size: 4 cylinders</div>
<div class="row">Horsepower: 220 hp</div>
<div class="row">Kilowatts: 164.0540 kw</div>
<div class="row">Engine Manufacturer: Audi</div>
<div class="row">Engine Model: Flex Fuel Capable engine</div>
<div class="row">TransmissionStyle: Automatic</div>
<div class="row">OtherEngineInfo: Fuel: Gas (50-St); Federal / California Emission Standard: BIN 5 / ULEV II; Emissions Certification Test Group: FVGAV02.0AUB / FVGAJ02.0AUF E85</div>
<div class="row">Primary Fuel Type: Gasoline</div>
<div class="row">Secondary Fuel Type: Ethanol (E85)</div>
</div>
<div class="group">Factory -</ br>
<div class="row">Manufacturer: AUDI</div>
<div class="row">ManufacturerId: 1149</div>
<div class="row">PlantCity: Ingolstadt</div>
<div class="row">PlantCountry: Germany</div>
</div>
<div class="group">Other -</ br>
<div class="row">ErrorCode: 0 - VIN decoded clean. Check Digit (9th position) is correct</div>
<div class="row">TPMS: Indirect</div>
</div>
*注意,您可以使用!empty()
而不是isset()
then strlen()
只有当你知道你永远不会拥有0
作为有效值。empty()
会出错0
作为“假”/“空”值,并默默地调用从主数组中删除该元素。