先ほど、php の多次元配列のソート関数である array_multisort() を紹介しました。さらに詳しく知りたい方は、2 次元配列のソート array_multisort をクリックしてください
ここに 2 つの PHP ソート関数があります。1 つは asort で、もう 1 つは arsort です。
asort(array,sorttype) 関数は配列をソートし、インデックスの関係を維持します。主に、セルの順序が重要な連想配列の並べ替えに使用されます。
オプションの 2 番目のパラメーターには、追加の並べ替えフラグが含まれます。
SORT_REGULAR - デフォルト。オリジナルのタイプで(タイプを変更せずに)処理されます。
SORT_NUMERIC - 値を数値として処理します
arsort(array,sorttype) 関数は、配列を逆順に並べ替え、インデックス関係を維持します。主に、セルの順序が重要な連想配列の並べ替えに使用されます。この関数の使用法は、この関数が配列のインデックスを逆順に並べ替えることを除いて、asort と同じです。
2 次元配列の並べ替えアルゴリズムを以下に示します。
<?php
<span style="white-space:pre"> </span>function array_sort($arr,$key,$type='asc'){ <span style="white-space:pre"> </span>$keyvalues = $new_array = array();<span style="white-space:pre"> </span>foreach ($arr as $k=>$v){<span style="white-space:pre"> </span>$keyvalues[$k] = $v[$key];<span style="white-space:pre"> </span>}<span style="white-space:pre"> </span>if($type == 'asc'){<span style="white-space:pre"> </span>asort($keyvalues);<span style="white-space:pre"> </span>}else{<span style="white-space:pre"> </span>arsort($keyvalues);<span style="white-space:pre"> </span>}<span style="white-space:pre"> </span>foreach ($keyvalues as $k=>$v){<span style="white-space:pre"> </span>$temparray[$k] = $arr[$k];<span style="white-space:pre"> </span>}<span style="white-space:pre"> </span>return $temparray; <span style="white-space:pre"> </span>}<span style="white-space:pre"> </span>$student = array(<span style="white-space:pre"> </span>array('name'=>'张三','age'=>'18','weight'=>100,'height'=>180),<span style="white-space:pre"> </span>array('name'=>'李四','age'=>'20','weight'=>200,'height'=>150),<span style="white-space:pre"> </span>array('name'=>'王五','age'=>'30','weight'=>150,'height'=>165),<span style="white-space:pre"> </span>array('name'=>'赵六','age'=>'50','weight'=>90,'height'=>173),<span style="white-space:pre"> </span>array('name'=>'孙七','age'=>'35','weight'=>160,'height'=>170)<span style="white-space:pre"> </span>);<span style="white-space:pre"> </span>$studentlist = array_sort($student,'weight');<span style="white-space:pre"> </span>var_dump($studentlist);?>
asort 関数を通じて、2 次元配列のインデックス並べ替えが保持され、このインデックスを通じて、ソートされた 2 次元配列を取得できます。次元配列のインデックスに対応する値が得られます。