PHP通过字符串中间的字符排序数组

时间:2013-09-26 12:23:00

标签: php arrays sorting

这里有新的,需要一些帮助。

我有一个包含以下元素的数组。

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

希望它是一个挑战:)

谢谢你们

1 个答案:

答案 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>