5

降順の番号の配列があります。この配列に追加するときは、最後に追加してから実行しますnatsort($times)。$ timesは次のようになります(print_rによって取得されます):

Array
(
    [0] => 0.01
    [1] => 0.02
    [2] => 0.05
    [3] => 0.08
    [7] => 0.10   <-- Just added and natsorted
    [4] => 0.11
    [5] => 0.14
    [6] => 0.21
)

ただし、追加したばかりの0.10が配列インデックス4になるようにすべてのキーを再割り当てして、新しい時刻がどこにあるかを簡単に確認できるようにします。つまり、「ランキングは$ arrayindex+1です」

この配列全体を新しい配列にコピーして新しいキーを取得する以外に、より良い方法はありますか?

4

3 に答える 3

20

の代わりにsort [docs]を使用できます:SORT_NUMERICnatsort

sort($times, SORT_NUMERIC);

とは異なりnatsort、配列のインデックスを再作成します。


並べ替え後/並べ替え中に配列のインデックスを再作成する方法は組み込まれていません。で並べ替えた後にarray_values [docs]を使用することもできますnatsort

$times = array_values($times);

ただし、これアレイをコピーしています。

于 2011-08-07T09:09:02.833 に答える
8

array_valuesを使用してこれを行うことができます。

$times=array_values($times);
于 2011-08-07T09:09:38.277 に答える
2

usortは、並べ替え後に配列キーを再割り当てします。strnatcmpで使用します。

usort( $times, 'strnatcmp' );
于 2011-08-07T09:18:22.593 に答える