-1

ここでは新しいので、助けが必要です。

次の要素を持つ配列があります。

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

その挑戦を願っています:)

みんなありがとう

4

1 に答える 1

0

まず第一に、これは明らかにカスタム比較になります。そのための go-to 関数は で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などの配列を生成します。各配列の 2 番目の要素は直径 (最初のソート基準) で、最初の要素は幅 (2 番目の基準) です。['8.25', '16']'8.25R16'

径が違う場合は、それで即判断します。

直径が等しい場合はstrnatcmp、幅を比較するために使用します。これは、幅 100 が幅 20 よりも大きくなるためです (愚かな ASCII 比較では、反対の結果が生成されます)。

于 2013-09-26T12:29:22.823 に答える