特定のキーで多次元配列を並べ替えるにはどうすればよいですか?
例:
$arr=array();<br />$arr[]=array('id'=>88,'val'=>'xxx');<br />$arr[]=array('id'=>188,'val'=>'xxx');<br />$arr[]=array('id'=>81,'val'=>'xxx');<br />$arr[]=array('id'=>388,'val'=>'xxx');<br />
配列を ID の降順に並べ替えたい
----- -解決策のアイデア--- -------------------array_multisort では、ソートに参加する配列の最初の次元の数が一貫している必要があります。 🎜>array_multisort は左から右にソートします。右側の優先順位は
array_multisort であり、ソート中に、ソートに参加する配列の対応するデータ項目が同時に交換されます
-- ----解決策のアイデア----------- ----------
array_multisort を実装できます。
------解決策のアイデア----------------------
1. 最も単純な状況を見てみましょう。初め 。 2 つの配列があります:
$arr1 = array(1,9,5);
$arr2 = array(6,2,4);
array_multisort($arr1,$ arr2);
print_r($arr1); // 取得された順序は 1,5,9
print_r($arr2); // 取得された順序は 6,4,2
2 つの配列の値は最初から最後まで対応していると推定します。1 は 6 に対応し、9 は 2 に対応し、5 は 4 に対応します。
配列をもう 1 つ追加して、何が起こるかを見てみましょう:
$arr1 = array(1,9,5);
$arr2 = array(6,2,4); 🎜>$arr3 = array(3,7,8);
array_multisort($arr1,$arr2,$arr3);
結果を表示します。1 は最初から 6 と 3 に対応します他の項目も同様です。この対応は、マニュアルでは「ソート中に元のキー名の関連付けを保持する」と呼ばれるものです。
また、各配列をデータベース テーブルの列として考えることもできます。対応する 1、6、3 は 1 つのデータ行であり、9、2、7 は別のデータ行です。 。 。
array_multisort は、最初の配列 (列として想像してください) によって最初に並べ替えます。最初の配列 (列) の値が同じ場合、次に 2 番目の配列 (列) によって並べ替えます。
次のプログラムを使用してテストできます:
$arr1 = array(1,9,5,9);
$arr2 = array(6,2,4,1) );
$arr3 = array(3,7,8,0);
array_multisort($arr1,$arr2,$arr3);
$ の結果は想像できますarr3 ここでは (3,8,0,7) です。
2. 次にarray_multisortのパラメータについて説明します。この関数のパラメータは非常に柔軟です。最も単純なケースは、上記のように 1 または n 個の配列をパラメーターとして使用することです。各配列内の項目の数が同じである必要があることに注意してください。そうでない場合は、警告が表示されて並べ替えが失敗します。
このように array_multisort($arr1,$arr2,$arr3); デフォルトでは、$arr2 を降順で並べ替えて文字列として比較する必要があります。 write:
array_multisort($arr1, $arr2, SORT_DESC, SORT_STRING, $arr3);
各配列の後には、ソート順序フラグまたはソート タイプ フラグを続けることができ、あるいは両方のフラグを続けることもできます。同時に現れます。ただし、各配列の後に指定できるのは、各タイプのソート フラグ 1 つだけです。
詳細は次のとおりです。
ソート順序フラグ:
SORT_ASC - 昇順でソート (デフォルト)
SORT_DESC - 降順でソート
参考: http://zhidao.baidu.com/question/213141342.html
-----ソリューションのアイデア-------------- -- -----
$ids = array();foreach ($result as $j) {
$ids[] = $j['rid'];
}
array_multisort($ids, SORT_DESC , $result) //ソート