ホームページ >バックエンド開発 >PHPチュートリアル >カスタム関数を使用して配列を並べ替える方法

カスタム関数を使用して配列を並べ替える方法

WBOY
WBOYオリジナル
2016-06-13 12:06:161140ブラウズ

カスタム関数を使用した配列の並べ替えについて
たとえば、関数 uasort() では、2 つのカスタム関数を比較します。

<?php<br />function a_sort($a, $b){<br />	echo $a . '--' . $b . "<br />";<br />	if($a==$b) return 0;<br />	return ($a>$b) ? 1 : -1;<br />}<br />function b_sort($a, $b){<br />	echo $a . '--' . $b . "<br />";<br />	if($a==$b) return 0;<br />	return ($a>$b) ? -1 : 1;<br />}<br /><br />$arr = array('a'=>'what', 'b'=>'where', 'c'=>20, 'd'=>'how');<br />uasort($arr, 'a_sort');<br />print_r($arr);<br /><br />echo "<br />--------------------<br />";<br /><br />$arr = array('a'=>'what', 'b'=>'where', 'c'=>20, 'd'=>'how');<br />uasort($arr, 'b_sort');<br />print_r($arr);<br />?>


1. カスタム関数の仕組み。たとえば、a_sort: 1 回目は $a='where'、$b='what'; 2 回目は $a=where、$b=20.... これはなぜでしょうか。
2. 戻り値 0、1、-1 は何を意味し、ソートにどのように影響しますか?
------解決策----------------------
初回 $a='where', $ b='what'; 2 回目は $a=where、$b=20 は並べ替えルールの役割です
($a>$b) 1 : -1; $b) ? -1 : 1; 大きいものから小さいものへ (数字は文字より大きい)
-----解決策-------------- -- ----
1. カスタム関数の仕組み。たとえば、a_sort: 1 回目は $a='where'、$b='what'; 2 回目は $a=where、$b=20.... これはなぜでしょうか。
$a と $b は、a_sort メソッドと b_sort メソッドで定義されたパラメーターです。毎回、配列内で比較する必要がある要素が、比較を実行するために 2 つのパラメーター $a と $b を通じてメソッドに渡されます。
つまり、$a と $b は毎回異なります。

初回 $a='where', $b='what'; 2 回目 $a=where, $b=20.
比較プロセスでは、配列 各要素は他の要素と比較されます。
これで $arr = array('a'=>'what', 'b'=>'where', 'c'=>20, 'd'=>'how');
したがって、
a b
a c
a d
比較
、次に
b c
b d
、最後に
c d
比較

2. 戻り値 0、1、-1 は何を意味し、ソートにどのように影響しますか?
0 は
1 より大きい
-1 より小さい

------解決策---------------- - ---
はは、#1 は何も言わず、#2 は一般原則
に基づいてそれを言っただけで、なぜそれが
どこ--何が
どこ--なのか説明しませんでした。 20
どのように --どこ
何を --どのように

カスタム並べ替え関数は、挿入並べ替えアルゴリズムと組み合わせた双方向バブル アルゴリズムを使用します
比較は中心から両方に拡張されます終了

質問 2 のマニュアルでは、次のことが非常に明確にされています。
最初のパラメータがゼロより小さいとみなされる場合、比較関数はゼロより小さい、ゼロ以上の整数を返さなければなりません。 2 番目のパラメータ以上です。

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