)
[2] => 配列
(
[a] => 5
[b] => 1
)
[3] => 配列
(
[a] => 5
[b] => 3
)
)
並べ替えフィールドの値は同じですが、usort は配列全体の順序を崩します。
比較した値が同じ場合に元の位置を保持したい場合は、array_multisort を使用できます:
コードをコピーします
コードは次のとおりです:
/ *
値が同じ場合に元の位置を変更するには PHP で usort を解決してください 質問
作者: Artlover http://www.CodeBit.cn
*/
// Index counter $i = 0; // 2 つの空の配列を作成し、最初の配列には並べ替えるフィールドを保持し、2 番目の配列には元のインデックス情報を保存します $a = $index = array(); foreach ($arr as $key => $data) { $a[$key] = $data['a'];
$index[ ] = $i++;
}
// 最初の配列をソートし、次に元のインデックスでソートします
array_multisort($a, SORT_ASC, $ Index, SORT_ASC, $arr);
?>
結果:
コードをコピー
コードは次のとおりです:
Array
(
[0] => Array
(
[ある] => 5
[b] => 3
) [1] => 配列 ( [a] => 5 [b] => 1
)
[2] =>配列
(
[a] => 5
[b] => 4
)
[3] => 配列
(
[a] => 5
[b] => 2
)
)
http://www.bkjia.com/PHPjc/324740.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/324740.html
技術記事
PHP 4.1.0 以降、比較された値が同じ場合、usort の元の位置が変更される可能性があります。ドキュメントには次のように書かれています。2 つのメンバーが等しいと比較された場合、ソートされた配列内の順序は異なります。