ホームページ  >  記事  >  バックエンド開発  >  PHP配列ソート関数の使い方_PHPチュートリアル

PHP配列ソート関数の使い方_PHPチュートリアル

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

PHPには、単純なソート関数昇順、rsort降順などを含む、1次元配列ソート関数や2次元配列ソート関数を含む多くのデータソート関数があります。

php配列ソート関数には、

が含まれます

sort (&$arr [,fruits] ) 配列を下位から上位にソートし、新しいキー名を割り当てます
。 rsort ( &$arr [,fruits] ) 配列を逆ソートし、新しいキー名を割り当てます
asort ( &$arr [,fruits] ) は配列をソートし、インデックスを変更しないようにします
arsort( &$arr [,fruits] ) は配列を逆順にソートし、インデックスを変更しないようにします


ksort ( &$arr [,fruits] ) 配列をキー名でソートします
krsort( &$arr [,fruits] ) は、グループ番号をキー名によって逆順にソートします


natsort( &$arr ) 配列のキー値に対して「自然な並べ替え」を実行し、長さ、アルファベットなどで並べ替えます。
natcasesort( &$arr ) は、大文字と小文字を区別しない配列の「自然なランキング」を実行します


usort ( &$arr , cmp_function ) ユーザー定義関数は配列をソートし、キー名を並べ替えます
uksort (&$arr, cmp_function) ユーザー定義関数は配列をキーでソートします
uasort (&$arr, cmp_function) ユーザー定義関数は配列をソートし、インデックスを変更しないようにします


array_multisort( $arr , 混合)

2 番目のパラメータは、値に基づいて並べ替え動作を変更します


SORT_REGULAR 通常の比較単位 SORT_NUMERIC 単位を数値として比較します
SORT_STRING セルは文字列として比較されます。 SROT_LOCALE_STRING セルは現在のローカル設定に従って文字列として比較されます


--------ソート関数昇順-------------------------- --- ------
bool sort ( array &$array [, int $sort_flags= SORT_REGULAR ] )

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

$fruits = array("レモン", "オレンジ", "バナナ", "リンゴ");
並べ替え($フルーツ);
var_dump($fruits);
?>
結果:
配列

0 =>

文字列

「リンゴ」(長さ=5)
1 =>

文字列

「バナナ」(長さ=6)
2 =>

文字列

「レモン」(長さ=5)
3 =>

文字列

「オレンジ」(長さ=6)

----------------------rソート降順----------------------

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

$fruits = array("レモン", "オレンジ", "バナナ", "リンゴ");
rsort($fruits);
var_dump($fruits);
?>
結果:
配列
0 =>

文字列

「オレンジ」(長さ=6)
1 =>

文字列

「レモン」(長さ=5)
2 =>

文字列

「バナナ」(長さ=6)
3 =>

文字列

「リンゴ」(長さ=5)

------asort は二次元配列の値を昇順にソートします (key=>value の関連付けを維持します)----------

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

$fruits = array("d" => "レモン", "a" => "オレンジ", "b" => "バナナ", "c" => "リンゴ");
盛り合わせ($フルーツ);
var_dump($fruits);
?>
結果:
配列
'c' =>

文字列

「リンゴ」(長さ=5)
'b' =>

文字列

「バナナ」(長さ=6)
'd' =>

文字列

「レモン」(長さ=5)
'a' =>

文字列

「オレンジ」(長さ=6)

--------------arsort は 2 次元配列の値を降順にソートします (key=>value の関連付けを維持します)----------- ---

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

$fruits = array("d" => "レモン", "a" => "オレンジ", "b" => "バナナ", "c" => "リンゴ");
アルソート($フルーツ);
var_dump($fruits);
?>
結果
配列
'a' =>

文字列

「オレンジ」(長さ=6)
'd' =>

文字列

「レモン」(長さ=5)
'b' =>

文字列

「バナナ」(長さ=6)
'c' =>

文字列

「リンゴ」(長さ=5)

----------ksort は配列をキーの昇順にソートします--------------

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

$fruits = array("d"=>"レモン", "a"=>"オレンジ", "b"=>"バナナ", "c"=>"リンゴ");
ksort($fruits);
var_dump($fruits);
?>
結果
配列

'a' =>

文字列

「オレンジ」(長さ=6)
'b' =>

文字列

「バナナ」(長さ=6)
'c' =>

文字列

「リンゴ」(長さ=5)
'd' =>

文字列

「レモン」(長さ=5)

----------krsort は配列キーを降順にソートします----------- - ----------

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

$fruits = array("d"=>"レモン", "a"=>"オレンジ", "b"=>"バナナ", "c"=>"リンゴ");
krsort($fruits);
var_dump($fruits);
?>

配列
「d」=>

文字列

「レモン」(長さ=5)
'c' =>

文字列

「リンゴ」(長さ=5)
'b' =>

文字列

「バナナ」(長さ=6)
'a' =>

文字列

「オレンジ」(長さ=6)


----------------usort 関数はユーザー定義関数に従って並べ替えます----------------

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

関数 cmp($a, $b)
{
If ($a == $b) {
0 を返す;
}
戻り値 ($a < $b) ? -1 : 1;
}

$a = 配列(3, 2, 5, 6, 1);

usort($a, "cmp");

var_dump($a);
?>
結果:
配列
0 =>

int

1
1 =>

int

2
2 =>

int

3
3 =>

int

5
4 =>

int

6

-----------------uksort はカスタム関数を使用して配列をキーで並べ替えます-----------------

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

関数 cmp($a, $b)
{
$a = preg_replace('@^(a|an|the) @', '', $a);
$b = preg_replace('@^(a|an|the) @', '', $b);
strcasecmp($a, $b);を返します
}

$a = array("ジョン" => 1, "地球" => 2, "リンゴ" => 3, "バナナ" => 4);

uksort($a, "cmp");

var_dump($a);
?>
結果:
配列
「リンゴ」=>

int

3
「バナナ」 =>

int

4
「地球」=>

int

2
「ジョン」=>

int

1

----------uasort はカスタム関数を使用して、インデックス関係を変更せずに値で配列を並べ替えます-----------

----------------array_multisort 複数の配列または多次元配列をソートします----------

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

// 比較関数
関数 cmp($a, $b) {
If ($a == $b) {
0 を返す;
}
戻り値 ($a < $b) ? -1 : 1;
}

//ソートされる配列
$array = array('a' => 4, 'b' => 8, 'c' => -1, 'd' => -9, 'e' => 2, 'f' => 5、'g' => 3、'h' => -4) var_dump($array);

// 結果の配列を並べ替えて出力します

uasort($array, 'cmp');
var_dump($array);
?>
結果:
配列
'a' =>

int

4

'b' =>

int

8

'c' =>

int

-1

「d」=>

int

-9

'e' =>

int

2

'f' =>

int

5

'g' =>

int

3

'h' =>

int

-4

配列
'd' =>

int

-9

'h' =>

int

-4

'c' =>

int

-1

'e' =>

int

2

'g' =>

int

3

'a' =>

int

4

'f' =>

int

5

'b' =>

int

8

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

$ar = 配列(
array("10", 11, 100, 100, "a"),
配列(1, 2, "2", 3, 1)
);

array_multisort($ar[0], SORT_ASC, SORT_STRING,
$ar[1], SORT_NUMERIC, SORT_DESC);
var_dump($ar);
?>
結果:
配列
0 =>
配列
0 =>

文字列

「10」(長さ=2)
1 =>

int

100
2 =>

int

100
3 =>

int

11
4 =>

文字列

「a」(長さ=1)
1 =>
配列
0 =>

int

1
1 =>

int

3
2 =>

文字列

「2」(長さ=1)
3 =>

int

2
4 =>

int

1

//説明:
1 上記の例では、$ar 配列は、まず $ar[0] の文字列値に従って昇順に配置され、文字列値が等しい場合は、数値に従って降順に配置されます。 $ar[1] 配列の値。
2. array_multisort 関数の任意の位置のパラメータが配列の場合、それは並べ替えに使用される値を表します。 複数の配列パラメーターがある場合、
などの定数の場合、前の配列値が最初にソートされます。 SORT_ASC、SORT_DESC、SORT_REGULAR、SORT_NUMERIC、SORT_STRING。


PHPの2次元配列ソート関数

PHP の 1 次元配列は、sort()、asort()、arsort() などの関数を使用してソートできますが、PHP の 2 次元配列のソートはカスタマイズする必要があります。

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

コードは次のとおりです関数 array_sort($arr,$keys,$type='asc'){
コードをコピー
$keysvalue = $new_array = array();

foreach ($arr as $k=>$v){
$keysvalue[$k] = $v[$keys];
}
if($type == 'asc'){
並べ替え($keysvalue);
}その他{
arsort($keysvalue);
}
リセット($keysvalue);
foreach ($keysvalue as $k=>$v){
$new_array[$k] = $arr[$k];
}
$new_array を返す
}

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

tru​​ehttp://www.bkjia.com/PHPjc/632806.html技術記事 PHP には、1 次元配列ソート関数や 2 次元配列ソート関数、単純なソート関数昇順ソート、rsort 降順ソートなど、多くのデータソート関数があります。PHP 配列ソート関数には次のものが含まれます...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。