私は古い仕事のいくつかを調べていて、非常に異なった長い道のりを試みましたが、asort関数が必要な用途のいくつかで完全に機能することを確認しました。
だから私の質問は正確に、ソート時にasortはどのように関連付けを維持するのですか?配列はキーまたは値で並べ替えることができると思いましたが、3番目の並べ替えピボットはありますか?
「3番目のピボット」は、メモリ/アレイ内の実際の場所です。
次の2つの配列でforeachを実行すると、はっきりとわかります。これらは同じですが、順序が異なります。
$x1=array('mmm'=>'mmm','bbb'=>'bbb','ccc'=>'ccc');
$x2=array('ccc'=>'ccc','bbb'=>'bbb','mmm'=>'mmm');
foreach($x1 as $k=>$v) echo "{$k} {$v}";
foreach($x2 as $k=>$v) echo "{$k} {$v}";
これらの2つのアレイでデフォルトのソートを実行すると、次の両方の場合になります。
$x1=array('bbb'=>'bbb','ccc'=>'ccc','mmm'=>'mmm');
$x2=array('bbb'=>'bbb','ccc'=>'ccc','mmm'=>'mmm');
asort — 配列をソートし、インデックスの関連付けを維持します
たとえば、次のようになります。
Asort
インデックス=>値の関連付けを維持しながら、値で昇順にソートするだけです。Arsort
は同じですが、desc 方法です。マニュアルは、ここで配列の並べ替え機能についてかなり明確です。