ホームページ  >  記事  >  バックエンド開発  >  PHPのarray_multisort()関数使用上の注意_PHPチュートリアル

PHPのarray_multisort()関数使用上の注意_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:27:46813ブラウズ

Function bool array_multisort (array &$arr [,mixed $arg = SORT_ASC [,mixed $arg = SORT_REGULAR [,mixed $...]]] )
パラメータの説明: この関数は複数の配列または多次元配列をソートします
First 最初のパラメータは配列であり、後続の各パラメーターは配列または次の並べ替え順序フラグにすることができます
SORT_ASC - デフォルト、昇順で並べ替えます
SORT_DESC - 降順で並べ替えます
その後、並べ替えタイプを指定できます
SORT_REGULAR - デフォルト。各項目を規則正しい順序で並べます。
SORT_NUMERIC - 各項目を数値順に並べ替えます。
SORT_STRING - 各項目をアルファベット順に並べ替えます。
コード例

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

$arr1 = array('10', 11, 100, 100, 'a');
$arr2 = array(1, 2, 3, ' 2', 5);
array_multisort($arr1, $arr2);
結果は次のようになります:
$arr1
Array ( [0] => 10 [1] => a [2] = > 11 [ 3] => 100 [4] => 100 )
# '10' は、他の 3 つの数値よりも小さい整数 10 に変換されます
# '10 ' は、最初の文字 '1' の ASCII コード値が 49 である文字列は 'a' (ASCII 値は 97) より小さいため、'10' が最小要素と比較されます
# 'a'他の 3 つの数値を比較するときに整数に変換されます 0、他の 3 つの数値より小さい
$arr2
Array ( [0] => 1 [1] => 5 [2] => 2 [3] = > 2 [4] => 3 )
# $arr2 要素 1 は $arr1 要素 '10' の位置に対応するため、位置 [0] にランクされます
# $arr1[2] => 100, $ arr1[3] => 100 は $arr2 要素 '2' にそれぞれ対応します。 3 は '2' より大きいので、2 に対応する $arr1[2] => 100 のソートされた添字は
3 で、3 に対応する $arr1[3] => 100 のソートされた添字は 4 になります。ソートに参加する配列要素の数は変わりません
2。ソートされた配列要素の位置は、たとえば '10' => 11 => 2 に対応します。前の配列の順序に基づいて
4. 前の配列が等しい要素に遭遇した場合、後者の配列を比較します


array_multisort — 複数の配列または多次元配列を並べ替えます


説明 bool array_multisort ( array $ar1 [,mixed $arg [,mixed $ ... [, array $... ]]] )
成功した場合は TRUE を返し、失敗した場合は FALSE を返します

array_multisort() は、複数の配列を一度に並べ替えたり、次の順序に従って並べ替えたりするために使用できます。特定の次元または複数の次元 多次元配列をソートします。

関連付けられた (文字列) キー名は変更されませんが、数値キー名は再インデックスされます。

入力配列はテーブルの列として扱われ、行ごとに並べ替えられます。これは SQL の ORDER BY 句の機能と似ています。最初の配列は、ソートされるメインの配列です。配列内の行 (値) が同じであると比較された場合、次の入力配列内の対応する値のサイズに従って並べ替えられます。

この関数のパラメータ構造はやや特殊ですが、非常に柔軟です。最初のパラメータは配列である必要があります。次の各パラメータは、以下にリストされている配列または並べ替えフラグにすることができます。

ソート順序フラグ:

SORT_ASC - 昇順でソート
SORT_DESC - 降順でソート

ソートタイプフラグ:

SORT_REGULAR - 通常の方法で項目を比較
SORT_NUMERIC - 項目を番号順で比較
SORT_STRING - 項目を比較番号順 文字列比較によると、各配列の後に 2 つの類似した並べ替えフラグを指定することはできません。各配列の後に指定されたソート フラグは、その配列に対してのみ有効です。その前は、デフォルト値 SORT_ASC および SORT_REGULAR です。

#1 複数の配列を並べ替える



コードをコピーする

コードは次のとおりです:
$ar1 = array("10", 100, 100, "a"); = array(1, 3, "2", 1); array_multisort($ar1); var_dump($ar2); この例では、最初の配列には「10」、「a」、100、100 が含まれます。 2 番目の配列には 1,1,"2",3 が含まれます。 2 番目の配列内の項目の順序は、最初の配列内の対応する項目 (100 と 100) の順序とまったく同じです。


コードをコピーします

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


array(4) {
[0]=> string(2) "10"
[1]=> string(1) "a"
[2]=> int(100)
[3]=> int(100)
} array(4) { [0]=> int(1)=> int; 1) [2]=> string(1) "2" [3]=> int(3)
}


#2 コードをコピーします

は次のとおりです:


< ;?php
$ar = array (array ("10", 100, 100, "a"), array (1, 3, "2", 1)); ar[0]、SORT_ASC、SORT_STRING、
$ar[1]、SORT_NUMERIC、SORT_DESC);
この例で並べ替えると、最初の配列には 10、100、100、"a" (文字列の昇順で並べ替え) が含まれ、2 番目の配列には 1、3、"2"、1 (数値として並べ替え) が含まれます。降順ソート)。

#3 多次元配列のソート
コードをコピー コードは次のとおりです:

$ar = array(
array("10", 11, 100, 100, " a") ,
array( 1, 2, "2", 3, 1)
);
array_multisort($ar[0], SORT_ASC, SORT_STRING,
$ar[1], SORT_NUMERIC, SORT_DESC);
var_dump( $ar) ;
?>

この例では、ソート後、最初の配列は「10」、100、100、11、「a」になります(昇順の文字列として扱われます)。 2 番目の配列には、1、3、「2」、2、1 (降順の数値として扱われます) が含まれます。
コードをコピーします コードは次のとおりです:

array(2) {
[0]=> array(5) {
[0]=> string(2) "10"
[ 1]= > int(100)
[2]=> int(11)
[4]=>
[1] ]=> 配列(5) {
[0]=> int(1)
[2]=> 文字列(1) "2"
[3]= > int (2)
[4]=> int(1)
}
}


#4 データベースの結果を並べ替えます
この例では、データ配列の各セルがテーブル内の行を表します。これは、データベースに記録される典型的なデータのコレクションです。例のデータは次のとおりです:

ボリューム | エディション
-----+--------
67 | 2
86 | 6
98 | | 6
67 | 7
データはすべて data という名前の配列に格納されます。これは通常、mysql_fetch_assoc() などのループを通じてデータベースから取得されます。

$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('ボリューム' => 85, 'エディション' => 6);
$data[] = アレイ('ボリューム' => 98, 'エディション' => 2);
$data[] = array('ボリューム' => 86, 'エディション' => 6);
$data[] = アレイ('ボリューム' => 67, 'エディション' => 7);
?>
この例では、ボリュームは降順でソートされ、エディションは昇順でソートされます。

これで行を含む配列ができましたが、array_multisort() には列を含む配列が必要なので、次のコードを使用して列を取得し、並べ替えます。

// 列のリストを取得します
foreach ($data as $key => $row) {
$volume[$key] = $row['volume'];
$edition[$] key ] = $row['edition'];
}

// データをボリュームに従って降順に、エディションに従って昇順に並べ替えます
// $data を最後のパラメータとして使用し、共通キーによって並べ替えます
array_multisort ($volume, SORT_DESC, $edition, SORT_ASC, $data);
?> データ収集がソートされ、結果は次のようになります。 ------
98 | 2
86 | 1
85 | 6
67 2
67 |


例 5 SORT_STRING と SORT_REGULAR はどちらも大文字と小文字を区別します、大文字は小文字の前に並べ替えられます。

大文字と小文字を区別しない並べ替えを実行するには、元の配列の小文字のコピーに基づいて並べ替える必要があります。



コードをコピーします

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


$array = array('Alpha', 'atomic', 'Beta', 'bank');
$array_ lowercase = array_map( 'strto lower' , $array);

array_multisort($array_ lowercase, SORT_ASC, SORT_STRING, $array);


上記のルーチンは次のように出力します。
[0] => アルファ [1] => アトミック [3] => ベータ )
【翻訳者注】この関数は非常に便利です。もう一度お試しください。 次の例を見てください:


例 #6 ランキング



コードをコピー

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

$grade = array("score" => array (70, 95, 70.0 , 60, "70"),
"name" => array("張三", "李思", "王武",
"趙劉", "劉斉")) ;
array_multisort($grade ["score"], SORT_NUMERIC, SORT_DESC,
// スコアを数値として使用し、高い順に並べ替えます
$grade["name"], SORT_STRING, SORT_ASC);文字列としての名前 (小さいものから大きいものへ)
var_dump($grade)?>
上記のルーチンは次のように出力します:

array(2) {
["score"]=>
[0]=>
int(95)
[1]=>string (2) "70"
[2]=>
float(70)
[3]=>
int(60)
}
["] =>array(5) {
[0]=>
string(5) "Li Si"
[1]=>
string(6) "Liu Qi"
string (7) "Wang Wu"
[3]=>
string(9) "Zhang San"
[4]=>
string(8) "Zhao Liu"
}
}
この例では、成績が含まれます 配列 $grade はスコアによって高から低の順に並べ替えられ、同じスコアを持つ人々は名前によって小から大の順に並べ替えられます。並べ替えの結果、Li Si が 95 ポイントで 1 位、Zhao Liu が 60 ポイントで 5 位にランクされました。 Zhang San、Wang Wu、Liu Qi はいずれも 70 ポイントを獲得し、ランキングは名前のアルファベット順に並べられ、Liu が 1 位、Wang が 2 位、Zhang が最後でした。区別するために、3 つの 70 ポイントはそれぞれ整数、浮動小数点数、文字列で表され、それらのソート結果はプログラム出力で明確に確認できます。



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

www.bkjia.com

tru​​e

技術記事関数 bool array_multisort ( array $arr2 = array(1, 2, 3, '2', 5); array_multisort($arr1, $arr2); 結果は次のようになります: $arr1 Array ( [0] = 10 [1] = a [ 2] = 11 [3] = 100 [4] = 100 ) # '10' in...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。