ホームページ  >  記事  >  バックエンド開発  >  PHP 配列ソート関数のコレクションとそれらの間の接続の分析_PHP チュートリアル

PHP 配列ソート関数のコレクションとそれらの間の接続の分析_PHP チュートリアル

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

以下で説明するいくつかの配列関数のソートにはいくつかの共通点があります:
1 配列はソート後、配列自体が変更され、関数の戻り値は bool 型になります。
2 関数名に現れる単一の a は関連付けを意味し、値によるソートの過程で key=>value の対応関係が変わらないことを意味します
3 関数名に現れる単一の k は key を意味し、値によるソートのプロセス中 ソートのプロセスでは、配列の値ではなく配列のキーに従ってソートします
4 関数名に現れる単一の r は reverse を意味し、順序が not の逆であることを意味します。 r
5 を追加すると、関数名に現れる 1 つの u はユーザー定義を意味します。つまり、関数のロジックがパラメーター 1 ---------------------ソート関数昇順---------------------- --------

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

bool sort ( array &$array [, int $sort_flags= SORT_REGULAR ] )
$fruits = array( "レモン", "オレンジ", "バナナ", "リンゴ");
sort($fruits);
var_dump($fruits);
?>
結果:
array
0 =>
'リンゴ' (長さ=5)
1 =>
文字列
'バナナ' (長さ=6)
2 =>
文字列
'レモン' (長さ=5)
3 =>オレンジ' (長さ=6)



--------------------------降順に並べ替え--------------- ------- -


コードをコピーします
コードは次のとおりです:$fruits = array("lemon", "orange", "banana", " apple");
rsort($fruits);
var_dump($fruits);
?>
結果:
配列
0 =>
文字列
'オレンジ' (長さ=6)
1 =>
文字列
'レモン' (長さ=5)
2 =>
文字列
'バナナ' (長さ=6)
3 =>
文字列
'リンゴ' (長さ=5)



----- -----------asort 2次元配列の値を昇順に並べます(key=>valueの関連付けを保ちます) -----------


コードをコピーします
コードは次のとおりです: $fruits = array("d" => "lemon", "a" => "orange", "b" => ; "バナナ", "c" => "リンゴ");
asort($fruits);
?>
結果:
配列
'c' =>リンゴ' (長さ=5)
'b' =>
文字列
'バナナ' (長さ=6)
'd' =>
文字列
'レモン' (長さ=5)
'a' =>
string
'orange' (length=6)



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



コードをコピーします
コードは次のとおりです:
< ?php$fruits = array("d" => "lemon", "a" = > "オレンジ", "b" => "バナナ", "c" => "リンゴ"); arsort($fruits);var_dump($fruits);
?>
結果
'a' =>
文字列
'オレンジ' (長さ=6)
'd' =>
文字列
'レモン' (長さ=5)
'b' =>
文字列
'バナナ' (長さ=6) =6)
'c' =>
string
'apple' (length=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 関数はユーザー定義関数に従ってソートします--------------
コードをコピー コード以下の通り:
function cmp($a, $b)
{
if ($a == $b) {
return 0;
}
return ($a < $b) ? - 1 : 1;
}
$a = array(3, 2, 5, 6, 1);
usort($a, "cmp");
var_dump($a);
?>

結果:
配列
1
1 =>
int
3
3 =>
int
4 =>
6

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




コードをコピーします

コードは次のとおりです:
function cmp($a, $b){ $a = preg_replace('@^(a|an|the) @', '' , $a); $b = preg_replace('@^(a|an|the) @', '', $b); return strcasecmp($a, $b);
}
$a = array( "ジョン" => 1、"地球" => 2、"リンゴ" => 4);
uksort($a, "cmp");
var_dump( $a);
?>


結果:
array
'リンゴ' =>
int
3
'バナナ' =>
int
4
'地球' => 2
'John' =>
int
1

--------------uasort は、インデックス関係を変更せずに、値で配列を並べ替えます----- ----




コードをコピー

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

// 比較関数function cmp($a, $b) {
if ($a == $ b) { return 0; } return ($a < $b) ? -1 : 1;}
// ソート対象の配列
$array = array('a' => 4, 'b) ' => 8、'c' => -9、'f' => 3、'h' ' => -4);
var_dump($array);
// 結果の配列を並べ替えて出力します
uasort($array, 'cmp');
var_dump($array);
?>


Result :
配列
'a' =>
int
4
'b' =>
int
8
'c' => int
-9
'e' => 2
'f' =>
int
5
'g' =>
int
3
'h' =>
int
-4
array
'd' =>
-9
'h' =>
int
-4
'c' =>
int
2
'g' => 'a' = >
int
4
'f' =>
int
5
'b' =>
int
8

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




コードをコピー

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


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

array_multisort($ar[0], SORT_ASC, SORT_STRING,
$ar[1], IC, SORT_DESC);
var_dump($ar);
?>

Result:
Array => 100〜3 =&gt&gt;
1
1 =>
int
3
2 => ;
string
'2' (length=1)
3 =>
int
2
4 => ] 文字列値は昇順に並べ替えられます文字列値が等しい場合、$ar[1] 配列の数値に従って降順に並べ替えられます。
2 array_multisort 関数の任意の位置のパラメータが配列の場合、それは並べ替えに使用される値を表します。
複数の配列パラメータがある場合、
などの定数の場合は、前の配列の値が最初に並べ替えられます。 SORT_ASC、SORT_DESC、SORT_REGULAR、SORT_NUMERIC、SORT_STRING.
はソート方法を示します(配列値が最初に取得されます)。
================================================ === =========================================

PHP 二次元配列ソート関数

PHPの1次元配列はsort()、asort()、arsort()などの関数を使用してソートできますが、PHPの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 を $ k=>$ v){
$new_array[$k] = $arr[$k];
}return $new_array;
}


指定されたキー値に従って 2 次元配列をソートできます。昇順または降順も指定できます。 並べ替え方法 (デフォルトは昇順)、使用例:
コードをコピー
コードは次のとおりです:


$array = array(
array('name'=>) ;'携帯電話','ブランド'=>'ノキア','価格'=>1050),
array('名前'=>'ラップトップ','ブランド'=>'レノボ','価格'=>4300),
array('name'=>'カミソリ','brand'=>'フィリップス','価格'=>3100),
array('name'=>'トレッドミル','ブランド'=>'三和松史','価格'=>4900),
array('名前'=>'時計','ブランド'=>'カシオ','価格'=> ;960),
array(' name'=>'LCD TV','brand'=>'Sony','price'=>6299),
array('name'=>'レーザー プリンター' ,'brand'=>' HP','price'=>1200)
);
$ShoppingList = array_sort($array,'price');
print_r($ShoppingList);


上記は$array の 2 次元配列を 'price' に従って並べ替えます。
出力結果:(省略)。


http://www.bkjia.com/PHPjc/327874.htmlwww.bkjia.comtru​​e
http://www.bkjia.com/PHPjc/327874.html

技術記事

以下で説明するいくつかの配列関数のソートにはいくつかの共通点があります。 1. 配列はソート関数のパラメーターとして使用され、ソート後に配列自体が変更され、関数の戻り値は bool 型になります。 ...





声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。