多次元配列を並べ替える一般的なアプローチは、
1 並べ替えられたデータを取得し、配列 $arrSort に入れることです。キー インデックスは、一意性を保証するために並べ替えられる配列のインデックスです。
2 並べ替え関数 sort を使用して、 sort $arrSort .
3 $arrSort を走査し、そのインデックスに従って多次元配列のデータを取得し、ソートされた多次元配列を再構築します
コードは次のとおりです。 配列 ( [0] => 配列 (
[リンク] => テスト
[名前] => test.rpm
[タイプ] => ファイル
[サイズ] => 988.9k
[mtime] = > 1185160178)
... .
)
昔、インターネットでソート機能を見つけました。効率的ではありませんが、非常に実用的です
コードは次のとおりです。
_array_sort($arrFile, 1, 1);/ /名前フィールドに従って並べ替える
_array_sort($arrFile, 3, 1); //サイズフィールドに従って並べ替える /* @records 配列besort @field ソートするフィールド、数値であるか注意してください @reverse forward or reverse order 順序
*/
function _array_sort($records, $field, $reverse, $defaultSortField = 0)
{
$uniqueSortId = 0;
$sortedRecords = array();
$indexedArray = array(); $record)
{
$uniqueSortId++;
$recordStr = implode("|", $record)."|".$recordArray[] =explode("|", $recordStr);
$primarySortIndex = count($record);
$records = $recordArray;
foreach($record としての $record)
{
$hash[$record[$primarySortIndex]] = $record[$field];
uasort($hash, "strnatcasecmp");
if($reverse)
$hash = array_reverse($ hash, true);
$valueCount = array_count_values($hash); => $value)
{
$indexedArray[] = $primaryKey ;
$i = 0 ;
{
$i++; valueCount[$value] > 1)
{
foreach($records as $record)
{
if( $primaryKey == $record[$primarySortIndex])
{
$tempArr[$record[$defaultSortField]。" __".$i] = $record;
break;
}
}
$index = array_search($primaryKey, $indexedArray);
if(($i == count($records)) || ($値 != $hash[$indexedArray[$index+1]]))
{
uksort($tempArr, "strnatcasecmp");
if($reverse)
$tempArr = array_reverse($tempArr); ($tempArr as $newRecs)
{
$sortedRecords [] = $newRecs;
}
$tempArr = array();
}
}
else
{
foreach($record として)
{
if ($ primerykey == $ record [$ primarysortindex] {
$ sorted records; sort
array_mutisor は、前の関数とは比較にならない、複数の値に基づいて 2 次または 3 次のソートを実行することもできます
コードをコピーします
コードは次のとおりです:
array_map を使用して、並べ替える配列を取得します
$arrField = array_map(create_function('$n', 'return $n["size"];'), $arrFile);
//array_mutisor を使用して並べ替えます
$array_multisort($arrField, SORT_DESC, $arrFile);
III 最終テスト
188 個のデータの配列を使用してテストし、平均を見つけるために 50 回ソートします。
いいえ、一方向
0.04269016 名前
0.04267142 サイズ
2 番目の方法
0.001249 名前
0.00083924 サイズ
結果がすべてを物語ります
http://www.bkjia.com/PHPjc/320223.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/320223.html
技術記事
多次元配列を並べ替える一般的なアプローチは次のとおりです。 1. 並べ替えられたデータを取得し、それを配列 $arrSort に置きます。キー インデックスは並べ替えられる配列のインデックスであり、一意性が保証されます。 2. 並べ替え関数を使用します。 .