新来的,需要一些帮助。
我有一个包含以下元素的数组。
215/75R17.5
235/75R17.5
8.25R16
7.00R16
11R22.5
7.50R16
现在我需要弄清楚的是如何通过“R”之后的数字重新排序元素,然后是第一部分。
所以对此:
7.00R16
7.50R16
8.25R16
11R22.5
215/75R17.5
235/75R17.5
希望这是一个挑战:)
多谢你们
首先,这显然是一个自定义比较;首选函数是usort
,它接受自定义比较作为参数。
自定义比较函数如下所示:
function customCompare($x, $y) {
$x = explode('R', $x);
$y = explode('R', $y);
if ($x[1] != $y[1]) return $x[1] < $y[1] ? -1 : 1;
return strnatcmp($x[0], $y[0]);
}
首先,我们在字符 上拆分每个输入字符串,从诸如 的字符串R
中生成一个数组,例如. 在每个数组中,第二个元素是直径(第一个排序标准),第一个元素是宽度(第二个标准)。['8.25', '16']
'8.25R16'
如果直径不同,那么我们会立即据此做出判断。
如果直径相等,那么我们使用strnatcmp
比较宽度——这是为了使 100 的宽度大于 20 的宽度(愚蠢的 ASCII 比较会产生相反的结果)。