ホームページ >バックエンド開発 >PHPチュートリアル >PHP で 2 次元配列をソートし、カスタム関数を共有する 3 つの方法_PHP チュートリアル

PHP で 2 次元配列をソートし、カスタム関数を共有する 3 つの方法_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:34:32954ブラウズ

ソートについては、通常、データベースまたは nosql (例: redis) を使用してソートし、それをプログラムに出力して直接使用します。ただし、場合によっては、PHP を介して配列を直接ソートし、データを PHP に保存する必要があります。そのうちの 1 つはオブジェクトと配列ですが、最も処理されるのは配列です。これは、非常に豊富な組み込み関数ライブラリがあるためです (実際、オブジェクトはある程度まで配列として理解することもできます)。特定の機能を大幅に達成します。一般的に使用されるシステム関数には、sort、asort、arsort、ksort、krsort などが含まれます。ここでは主に 2 次元配列をソートするための 2 つの方法について説明します。

1. PHP の組み込み array_multisort 関数を使用して並べ替えます

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

$data = array();

$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'エディション' => 1);
$data[] = array('ボリューム' => 85, 'エディション' => 6);
$data[] = array('ボリューム' => 98, 'エディション' => 2);
$data[] = array('ボリューム' => 86, 'エディション' => 6);
$data[] = array('ボリューム' => 67, 'エディション' => 7);
的 // リストのリスト

Foreach ($ data as $ key = & gt; $ row) {

$ volume [$ key] = $ row ['edition'];
}
;
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);

print_r($data);

?>


出力結果:

コードをコピーします

コードは次のとおりです:Array( [0] => Array
gt; 2
)
[1] => [ボリューム] =>86
’’ ''(=>
array_multisort に関する公式ドキュメントにも、より詳細な手順が記載されています: http://www.php.net/manual/zh/function.array-multisort.php


2. カスタム関数の並べ替え 1




コードをコピーします

コードは次のとおりです:

$data = array();
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'エディション' => 1);
$data[] = array('ボリューム' => 85, 'エディション' => 6);
$data[] = 'ボリューム' => 98, 'エディション' => 2);
$data[] = array('ボリューム' => 86, 'エディション' => 6);
$data[] = 'ボリューム' => 67、「エディション」 => 7); // 列の列表を取得

foreach ($data as $key => $row)
{
$volume[$key] = $row['volume'];
$edition[$key] = $row[ 「エディション」];
}

$ret = arraySort($data, 'volume', 'desc');

print_r($ret);

/**

* @desc arraySort php の二次元配列ソートは、指定されたキーに従って配列をソートします
| desc
* @戻り配列
*/
function arraySort($arr, $keys, $type = 'asc') {
$keysvalue = $new_array = array();
foreach ($arr as $k => $ v){
$keysvalue[$k] = $v[$keys];
}
$type == 'asc' ? asort($keysvalue) : arsort($keysvalue);
reset($keysvalue);
foreach ($keysvalue as $k => $v) {
$new_array[$k] = $arr[$k];
}
return $new_array;
}
?>

出结果:



复制代
代码如下:Array(
[3] =>
(
[音量] => 98
[版] => 2
)

[4] =>配列
( [ボリューム] => 86

[エディション] => 6
)

[1] =>配列
(

[ボリューム] => 86

[エディション] => 1
)

[2] =>配列
(

[ボリューム] => 85

[エディション] => 6
)

[5] =>配列
(

[ボリューム] => 67

[エディション] => 7
)

[0] =>配列
(

[ボリューム] => 67

[エディション] => 2
)

)

このカスタム関数とシステム関数の違いの 1 つは、カスタム関数は特定のキーの並べ替えのみをサポートすることですが、システム関数 array_multisort は複数回並べ替えることができるのに対して、複数回実行する必要があることです。システム関数は、C の最後に実装されているため、一度に複数の並べ替えルールを指定できます。もちろん、このカスタム関数はさらに拡張して、さらに多くの並べ替えルールをサポートすることもできます。ランキング、リーダーボード、結果などのシナリオで今でもよく使用されています。

3. カスタム関数の並べ替え 2

次の関数は、指定されたキー値に従って指定された 2 次元配列を並べ替えます。まず関数の定義を見てみましょう:


コードをコピーします コードは次のとおりです:
function array_sort($arr, $keys,$type ='asc'){
$keysvalue = $new_array = array();
foreach ($arr as $k=>$v){
$keysvalue[$k] = $v[$keys ];
}
if($type == 'asc'){
asort($keysvalue);
}else{
arsort($keysvalue);
}
reset($keysvalue);
foreach ($keysvalue as $ k=>$ v){
$new_array[$k] = $arr[$k];
}
return $new_array;

指定されたキー値に従って 2 次元配列をソートでき、昇順または降順も指定できます。使用例:


コードをコピー コードは次のとおりです。
$array = array(
array('name'=> '携帯電話','ブランド'=>'ノキア','価格'=>1050),
array('名前'=>'ラップトップ','ブランド'=>'レノボ','価格' =>4300),
array('name' =>'カミソリ','brand'=>'フィリップス','価格'=>3100),
array('name'=>'トレッドミル' ,'brand'=>'三ヘマトシ','price'=>4900),
array('name'=>'時計','brand'=>'カシオ','価格'=> 960),
array('name'=>'LCD TV','brand'=>'Sony','price'=>6299),
array('name'=>'レーザー プリンター', 'ブランド'=>'HP','価格'=>1200)
);

$ShoppingList = array_sort($array,'price');print_r($ShoppingList);



上記は、2 次元配列 $array を 'price' に従って低位から高位にソートすることです。


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

tru​​ehttp://www.bkjia.com/PHPjc/751507.html技術記事ソートに関しては、通常、データベースまたは nosql (例: redis) を通じてソートし、プログラムに出力して直接使用しますが、場合によっては、PHP を通じて配列を直接ソートする必要があります...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。