多次元配列の特定のキー値をソートする PHP メソッド_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:23:30
オリジナル
872 人が閲覧しました

多次元配列の特定のキー値をソートするphpメソッド

PHPの多次元配列のソートはarray_multisort()関数で処理できます array_multisort()関数を使用すると複数の配列を一度にソートできます。 、または、特定の次元または多次元配列の多次元ソートに従って、関連付けられた (文字列) キー名は変更されませんが、数値キー名は再インデックスされます

ソート順フラグ:

SORT_ASC - 昇順で並べ替えます

SORT_DESC - 降順で並べ替えます

ソートタイプフラグ:

SORT_REGULAR - 通常の方法でアイテムを比較します

SORT_NUMERIC - 項目を数値で比較します

SORT_STRING - 項目を文字列で比較します

例1. 複数の配列をソートする

コードは次のとおりです

$ar1 = array("10", 100, 100, "a");
$ar2 = 配列(1, 3, "2", 1);
array_multisort($ar1, $ar2);

var_dump($ar1);
var_dump($ar2);
?>

この例でソートすると、最初の配列には「10」、「a」、100、100が含まれます。 2 番目の配列には 1,1,"2",3 が含まれます。 2 番目の配列内の項目の順序は、最初の配列内の対応する項目 (100 と 100) の順序とまったく同じです。

しかし、これらはいずれも、どのキー値がランキングに使用されるかを指定することはできません。以下にいくつかの関数とアルゴリズムをまとめましたが、どれも優れています。

サンプルコード

コードは次のとおりです

/**
* 複数桁の配列をソート
* @param $multi_array 配列
* @param $sort_key 渡す必要があるキー名
* @param $sort ソートタイプ
​*/
関数 multi_array_sort($multi_array, $sort_key, $sort = SORT_DESC) {
if (is_array($multi_array)) {
foreach ($multi_array as $row_array) {
if (is_array($row_array)) {
$key_array[] = $row_array[$sort_key];
} その他 {
FALSE を返します;
}
}
} その他 {
FALSE を返します;
}
array_multisort($key_array, $sort, $multi_array);
$multi_array を返す;
}

例子二

代码如下

関数 array_sort($arr, $keys, $type = 'asc') {

$keysvalue = $new_array = array();

foreach ($arr as $k => $v) {

$keysvalue[$k] = $v[$keys];
}

if ($type == 'asc') {

asort($keysvalue);
} その他 {

arsort($keysvalue);
}

リセット($keysvalue);

foreach ($keysvalue as $k => $v) {

$new_array[] = $arr[$k];
}

$new_array を返す;
}

例3

コードは次のとおりです

/*
関数: 指定されたキー値で二次元配列をソートします
著者:www.111cn.net
*/
関数 array_sort($array,$keys,$type='asc'){
if(!isset($array) || !is_array($array) || empty($array)){
戻ります '';
}
if(!isset($keys) || トリム($keys)==''){
戻ります '';
}
if(!isset($type) || $type=='' || !in_array(strto lower($type),array('asc','desc'))){
戻ります '';
}
$keysvalue=array();
foreach($array as $key=>$val){
$val[$keys] = str_replace('-','',$val[$keys]);
$val[$keys] = str_replace(' ','',$val[$keys]);
$val[$keys] = str_replace(':','',$val[$keys]);
$keysvalue[] =$val[$keys];
}
asort($keysvalue); //キー値の並べ替え
replace($keysvalue); // ポインタを配列の最初のポインタにリダイレクトします
foreach($keysvalue as $key=>$vals) {
$keysort[] = $key;
}
$keysvalue = array();
$count=count($keysort);
if(strto lower($type) != 'asc'){
for($i=$count-1; $i>=0; $i--) {
$keysvalue[] = $array[$keysort[$i]];
}
}その他{
for($i=0; $i $keysvalue[] = $array[$keysort[$i]];
}
}
$keysvalue を返します;
}

例えば、次のような配列があります。

コードは次のとおりです

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/834975.html技術記事多次元配列の特定のキー値のPHPソート方法 PHPの多次元配列のソートはarray_multisort()関数で処理できます。 array_multisort()関数を使用すると、複数の配列を一度にソートできます...
$配列=配列(

0=>array('id'=>8,'username'=>'phpernote'),
1=>array('id'=>9,'username'=>'com'),
2=>array('id'=>5,'username'=>'www')
);

次に、この 2 次元配列を ID で昇順に並べ替える必要があります。その後、次のようになります。

array_sort($array,'id','asc');

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート