将数字解析为特定组
Resolving a number to a specific group
我正在制作一个用于计算道路税数据的 Web 应用程序。为此,价格可以取决于车辆的重量。
我收到的数据是这样的:
array (
1 =>
array (
'quarterly' => 57,
'yearly' => 228,
),
12000 =>
array (
'quarterly' => 62,
'yearly' => 248,
),
13000 =>
array (
'quarterly' => 68,
'yearly' => 272,
),
14000 =>
array (
'quarterly' => 74,
'yearly' => 296,
),
15000 =>
array (
'quarterly' => 79,
'yearly' => 316,
),
16000 =>
array (
'quarterly' => 85,
'yearly' => 340,
),
17000 =>
array (
'quarterly' => 91,
'yearly' => 364,
),
18000 =>
array (
'quarterly' => 97,
'yearly' => 388,
),
19000 =>
array (
'quarterly' => 102,
'yearly' => 408,
),
20000 =>
array (
'quarterly' => 108,
'yearly' => 432,
),
21000 =>
array (
'quarterly' => 114,
'yearly' => 456,
),
22000 =>
array (
'quarterly' => 119,
'yearly' => 476,
),
23000 =>
array (
'quarterly' => 125,
'yearly' => 500,
),
24000 =>
array (
'quarterly' => 131,
'yearly' => 524,
),
25000 =>
array (
'quarterly' => 137,
'yearly' => 548,
),
26000 =>
array (
'quarterly' => 142,
'yearly' => 568,
),
27000 =>
array (
'quarterly' => 148,
'yearly' => 592,
),
28000 =>
array (
'quarterly' => 154,
'yearly' => 616,
),
29000 =>
array (
'quarterly' => 159,
'yearly' => 636,
)
);
数字(数组中的第一项,1
、1051
、1151
、1251
、1351
、1451,
等) 是重量classes,我需要检查用户的车辆重量并检查它属于哪个重量class。
比如我有一辆600KG的车,这辆车属于重量class 1
.
如果我有一个重量为1150 KG的例子,它属于重量class 1051
。
为了计算这个,我使用这个方法:
public static function resolveWeightClass(array $data, $vehicleWeight) {
$weightClasses = array_keys($data);
for ($weightClassIndex = 0; $weightClassIndex < count($weightClasses); $weightClassIndex++) {
$weightClass = $weightClasses[$weightClassIndex];
if ($weightClass < $vehicleWeight) {
continue;
}
return $weightClass;
}
return 0;
}
data
参数是所有数组键存在的地方,权重classes.
vehicleWeight
参数是车辆的重量。
问题
当我运行这个代码,并且车辆是例如16500
KG的,代码仍然选择17000
重量class,当我需要16000
体重class.
问题
我如何编写我的代码,以便它会选择正确的权重 class 以防它后面的权重 class。
试试这个方法:
public static function resolveWeightClass(array $data, $vehicleWeight) {
$weightClasses = array_keys($data);
sort($weightClasses);
for($i = 0; $i < count($weightClasses) - 1; $i++) {
if($weightClasses[$i+1] > $vehicleWeight) {
return $weightClasses[$i];
}
}
return $weightClasses[$i];
}
代码遍历排序的键并检查下一个键是否已经超过车辆重量。如果是,它 returns 当前密钥的数据。
这可能是您正在寻找的答案:
<?php
public static function resolveWeightClass(array $data, $vehicleWeight) {
$weightClasses = array_keys($data);
for ($weightClassIndex = 0; $weightClassIndex < count($weightClasses); $weightClassIndex++) {
$weightClass = $weightClasses[$weightClassIndex];
$nextWeightClass = (isset($weightClasses[$weightClassIndex+1]) ? $weightClasses[$weightClassIndex+1] : 99999999999);
if (($weightClass <= $vehicleWeight) && ($nextWeightClass > $vehicleWeight)) {
return $weightClass;
}
}
return 0;
}
?>
我正在制作一个用于计算道路税数据的 Web 应用程序。为此,价格可以取决于车辆的重量。
我收到的数据是这样的:
array (
1 =>
array (
'quarterly' => 57,
'yearly' => 228,
),
12000 =>
array (
'quarterly' => 62,
'yearly' => 248,
),
13000 =>
array (
'quarterly' => 68,
'yearly' => 272,
),
14000 =>
array (
'quarterly' => 74,
'yearly' => 296,
),
15000 =>
array (
'quarterly' => 79,
'yearly' => 316,
),
16000 =>
array (
'quarterly' => 85,
'yearly' => 340,
),
17000 =>
array (
'quarterly' => 91,
'yearly' => 364,
),
18000 =>
array (
'quarterly' => 97,
'yearly' => 388,
),
19000 =>
array (
'quarterly' => 102,
'yearly' => 408,
),
20000 =>
array (
'quarterly' => 108,
'yearly' => 432,
),
21000 =>
array (
'quarterly' => 114,
'yearly' => 456,
),
22000 =>
array (
'quarterly' => 119,
'yearly' => 476,
),
23000 =>
array (
'quarterly' => 125,
'yearly' => 500,
),
24000 =>
array (
'quarterly' => 131,
'yearly' => 524,
),
25000 =>
array (
'quarterly' => 137,
'yearly' => 548,
),
26000 =>
array (
'quarterly' => 142,
'yearly' => 568,
),
27000 =>
array (
'quarterly' => 148,
'yearly' => 592,
),
28000 =>
array (
'quarterly' => 154,
'yearly' => 616,
),
29000 =>
array (
'quarterly' => 159,
'yearly' => 636,
)
);
数字(数组中的第一项,1
、1051
、1151
、1251
、1351
、1451,
等) 是重量classes,我需要检查用户的车辆重量并检查它属于哪个重量class。
比如我有一辆600KG的车,这辆车属于重量class 1
.
如果我有一个重量为1150 KG的例子,它属于重量class 1051
。
为了计算这个,我使用这个方法:
public static function resolveWeightClass(array $data, $vehicleWeight) {
$weightClasses = array_keys($data);
for ($weightClassIndex = 0; $weightClassIndex < count($weightClasses); $weightClassIndex++) {
$weightClass = $weightClasses[$weightClassIndex];
if ($weightClass < $vehicleWeight) {
continue;
}
return $weightClass;
}
return 0;
}
data
参数是所有数组键存在的地方,权重classes.vehicleWeight
参数是车辆的重量。
问题
当我运行这个代码,并且车辆是例如16500
KG的,代码仍然选择17000
重量class,当我需要16000
体重class.
问题
我如何编写我的代码,以便它会选择正确的权重 class 以防它后面的权重 class。
试试这个方法:
public static function resolveWeightClass(array $data, $vehicleWeight) {
$weightClasses = array_keys($data);
sort($weightClasses);
for($i = 0; $i < count($weightClasses) - 1; $i++) {
if($weightClasses[$i+1] > $vehicleWeight) {
return $weightClasses[$i];
}
}
return $weightClasses[$i];
}
代码遍历排序的键并检查下一个键是否已经超过车辆重量。如果是,它 returns 当前密钥的数据。
这可能是您正在寻找的答案:
<?php
public static function resolveWeightClass(array $data, $vehicleWeight) {
$weightClasses = array_keys($data);
for ($weightClassIndex = 0; $weightClassIndex < count($weightClasses); $weightClassIndex++) {
$weightClass = $weightClasses[$weightClassIndex];
$nextWeightClass = (isset($weightClasses[$weightClassIndex+1]) ? $weightClasses[$weightClassIndex+1] : 99999999999);
if (($weightClass <= $vehicleWeight) && ($nextWeightClass > $vehicleWeight)) {
return $weightClass;
}
}
return 0;
}
?>