这里有新的,需要一些帮助。
我有一个包含以下元素的数组。
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
希望它是一个挑战:)
谢谢你们
答案 0 :(得分:0)
首先,这显然是一种自定义比较;它的首选函数是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]);
}
<强> See it in action 强>
首先,我们将每个输入字符串拆分为字符R
,从['8.25', '16']
等字符串生成'8.25R16'
等数组。在每个数组中,第二个元素是直径(第一个排序标准),第一个是宽度(第二个标准)。
如果直径不同,我们会立即通过判断。
如果直径相等,那么我们使用strnatcmp
来比较宽度 - 这是宽度100大于宽度20(哑巴ASCII比较会产生相反的结果)。< / p>