今日ご紹介するのはマニュアルのarray_multisort関数の説明です:
array_multisort()は、複数のPHPの2次元配列を一度に、または特定の条件に従ってソートするために使用できます。次元または複数の次元配列がソートされます。
連想 (文字列) キー名は変更されませんが、数値キー名は再インデックスされます。
入力配列はテーブルの列として扱われ、行ごとに並べ替えられます。これは SQL の ORDER BY 句の機能と似ています。最初の配列は、ソートされるメインの配列です。配列内の行 (値) が同じであると比較された場合、次の入力配列内の対応する値のサイズに従って並べ替えられます。
マニュアルを見ればわかるように、PHPの2次元配列のソートは最初の配列をソートし、その後の順序を調整することです。次のような配列:
<ol class="dp-xml"> <li class="alt"><span><span>array( 'id' =</span><span class="tag"><strong><font color="#006699">></font></strong></span><span> array(1,3,2), </span></span></li> <li class=""> <span> 'data'=</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>array('a','c','b')) </span> </li> </ol>
ID で多次元に並べ替えるだけで準備完了です。しかし、多くの場合、私たちが構築する配列は次のようになります:
<ol class="dp-xml"> <li class="alt"><span><span>array( </span></span></li> <li class=""> <span> array('id'=</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>1,'data'=</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>'a'), </span> </li> <li class="alt"> <span> array('id'=</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>3,'data'=</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>'c'), </span> </li> <li class=""> <span> array('id'=</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>2,'data'=</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>'b') </span> </li> <li class="alt"><span> ); </span></li> </ol>
PHP の 2 次元配列の並べ替えの要素は行ごとに配置され、列の 1 つで並べ替える必要があります。 PHP には行列転置のような機能が提供されていないようです。そのため、array_multisort を多次元ソートに直接使用することはできません。ただし、最初にソートされた列を抽出し、それを最初のパラメータとして array_multisort に渡すだけで済みます。