ここでは新しいので、助けが必要です。
次の要素を持つ配列があります。
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
その挑戦を願っています:)
みんなありがとう
まず第一に、これは明らかにカスタム比較になります。そのための 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 比較では、反対の結果が生成されます)。