ホームページ  >  記事  >  バックエンド開発  >  PHPの1次元と2次元配列のキーソート方法のまとめ_PHPチュートリアル

PHPの1次元と2次元配列のキーソート方法のまとめ_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:00:311013ブラウズ

PHP における配列のソートは常に一般的な問題であり、PHP における 1 次元配列と 2 次元配列のソートの実装手順に焦点を当てます。


機能: 配列を並べ替えます。

説明: バブルソート(1次元配列)(特定のキーでソートされた2次元配列)

ペアごとにソートするデータ要素のサイズを比較し、2 つのデータ要素の順序が逆転していることが判明した場合は、逆転したデータ要素がなくなるまでそれらを入れ替えます。

ソートされた配列 R[1..N] が垂直に構築され、各データ要素が重み付けされたバブルとみなされ、その配列が下から上にスキャンされ、原則に違反するものがあると想像してください。 . 最後の 2 つの気が上部の軽い気と下部の重い気になるまで、このプロセスを繰り返します。

コードは次のとおりですコードをコピー


array_multisort 並べ替えメソッド


array_multisort() を使用して、指定されたキー値に従って 2 桁の配列を並べ替える方法
この例では、$data という名前の 2 次元配列が定義され、次のようにソートされます

/**

* バブルソート(1次元配列)(特定のキーでソートされた2次元配列)
* ペアごとにソートするデータ要素のサイズを比較し、2 つのデータ要素の順序が逆転していることが判明した場合は、逆転したデータ要素がなくなるまで入れ替えます。 * ソートされた配列 R[1..N] が垂直に組み立てられ、各データ要素が重み付けされたバブルとみなされ、その配列が下から上にスキャンされ、原則に違反するものはすべてスキャンされます。これを何度も繰り返してください。
* 2 つの気の終わりまで、軽い方が上にあり、重い方が下にあります。
​*/

関数 bubble_sort($array,$key=null) {

$count = count($array);

if($count false を返す;
}
for($i = 0; $i for($j = $count - 1; $j > $i; $j--) {
If($key && isset($array[$key])){//二次元配列が存在します
If($array[$j][$key] < $array[$j - 1][$key]) {
$tmp = $array[$j];
$array[$j] = $array[$j - 1];
$array[$j - 1] = $tmp;
}
}else{ //一次元配列
If($array[$j] <$array[$j - 1]) {
$tmp = $array[$j];
$array[$j] = $array[$j - 1];
$array[$j - 1] = $tmp;
}
}
}
}
戻り $array;
}

コードは次のとおりです コードをコピー

$data[] = array('ボリューム' => 67, 'エディション' => 2); $data[] = array('ボリューム' => 86, 'エディション' => 1); $data[] = array('ボリューム' => 85, 'エディション' => 6); $data[] = array('ボリューム' => 98, 'エディション' => 2); $data[] = array('ボリューム' => 86, 'エディション' => 6); $data[] = array('ボリューム' => 67, 'エディション' => 7);
// 列のリストを取得します
foreach ($data as $key => $row) {
$volume[$key] = $row['volume']
$edition[$key] = $row['edition']
; }

// データをボリュームに従って降順に、エディションに従って昇順に並べ替えます
// $data を最後のパラメータとして使用し、共通キーでソートします
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);

print_r($data);


実行後、印刷結果は次のようになります:

配列
(
[0] => 配列

(

[ボリューム] => 98
[エディション] = & gt; 2

)

[1] => 配列
(
[ボリューム] => 86
[エディション] = & gt; 1
)
[2] => 配列
(
[ボリューム] => 86
[エディション] =>                                             [3] => 配列
(
[ボリューム] => 85
[エディション] => )
[4] => 配列
(
[ボリューム] => 67
[エディション] => )
[5] => 配列
(
[ボリューム] => 67
[エディション] => )
)





1 次元配列をソートするには、sort() を使用するだけで済みます。対応する asort($arr); 関数は、キー値でソートし、元のキーと値の関係を維持します。

rsort(); krsort(); 関数は、ソートが降順である点を除き、同じです。



http://www.bkjia.com/PHPjc/631253.html


www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/631253.html技術記事

PHP での配列のソートは常に一般的な問題であり、PHP での 1 次元配列と 2 次元配列のソートの実装手順に焦点を当てます。学生はそれを参照できます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。