1

このトリッキーなPHP連想配列を注文するにはどうすればよいですか?

私はこの連想配列を持っています:

Array (
    [4] => 3
    [2] => 4
    [3] => 1
    [6] => 1
    [1] => 1
)

値が最も高いキーで並べ替える必要がありますが、同じ値のキーを元の順序で保持する必要があるため、次のようになる必要があります。

Array (
    [2] => 4
    [4] => 3
    [3] => 1
    [6] => 1
    [1] => 1
    )

arsort()は、キーの番号順に同じ値でキーを再配置するため、使用できません。ここでは本当に困っています。助言がありますか?

4

1 に答える 1

4

救助するnatsort

$blub = array(4 => 3, 2 => 4, 3 => 1, 6 => 1, 1 => 1);
natsort($blub);
$blub = array_reverse($blub, true);

var_dump($blub);

これは常に出力されます:

array(5) { [2]=> int(4) [4]=> int(3) [3]=> int(1) [6]=> int(1) [1]=> int(1) }

natsortは、値がasortとは対照的に同じである場合に、幸いにも順序を保持する別の並べ替えアルゴリズムを使用しているようです。ただし、このため、natsortは他の従来の並べ替え関数よりも少し遅くなる可能性があることに注意してください。

于 2012-08-04T02:28:29.973 に答える