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

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

Jul 13, 2016 am 10:34 AM
php 配列のソート

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

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

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

$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] =&gt; [ボリューム] =>86
’’ ''(=&gt;
array_multisort に関する公式ドキュメントにも、より詳細な手順が記載されています: http://www.php.net/manual/zh/function.array-multisort.php


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




コードをコピーします

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

<?php
$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 までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

CakePHP の日付と時刻

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

CakePHP プロジェクトの構成

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

CakePHP ファイルのアップロード

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

CakePHP ルーティング

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP について話し合う

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP クイックガイド

See all articles