PHPの配列をソートするいろいろな方法
■sort関数…配列をソートする
$myarray = array('Perl','C++','Ruby','Python');
sort($myarray);
foreach($myarray as $key => $value) { echo $key . '=>' . $value . '<br>'; }
実行結果
0=>C++
1=>Perl
2=>Python
3=>Ruby
アルファベットの昇順にソートされました。
■rsort関数…配列を逆順にソートする
$myarray = array('Perl','C++','Ruby','Python');
rsort($myarray);
foreach($myarray as $key => $value) { echo $key . '=>' . $value . '<br>'; }
実行結果
0=>Ruby
1=>Python
2=>Perl
3=>C++
アルファベットの逆順にソートされました。
■asort関数…連想キーと要素との関係を維持しつつ配列をソートする
$myarray = array('Perl','C++','Ruby','Python');
asort($myarray);
foreach($myarray as $key => $value) { echo $key . '=>' . $value . '<br>'; }
実行結果
1=>C++
0=>Perl
3=>Python
2=>Ruby
キーとの関係をそのままに、アルファベットの昇順にソートされました。
■arsort関数…連想キーと要素との関係を維持しつつ配列を逆順にソートする
$myarray = array('Perl','C++','Ruby','Python');
arsort($myarray);
foreach($myarray as $key => $value) { echo $key . '=>' . $value . '<br>'; }
実行結果
2=>Ruby
3=>Python
0=>Perl
1=>C++
キーとの関係をそのままに、アルファベットの逆順にソートされました。
■ksort関数…配列をキーでソートする
$myarray = array(
'Perl' => 'ラリー・ウォール',
'C++' => 'ビャーネ・ストロヴストルップ',
'Ruby' => 'まつもとゆきひろ',
'Python' => 'グイド・ヴァンロッサム');
ksort($myarray);
foreach($myarray as $key => $value) { echo $key . '=>' . $value . '<br>'; }
実行結果
C++=>ビャーネ・ストロヴストルップ
Perl=>ラリー・ウォール
Python=>グイド・ヴァンロッサム
Ruby=>まつもとゆきひろ
キー順にソートされました。
■krsort関数…配列をキーで逆順にソートする
$myarray = array(
'Perl' => 'ラリー・ウォール',
'C++' => 'ビャーネ・ストロヴストルップ',
'Ruby' => 'まつもとゆきひろ',
'Python' => 'グイド・ヴァンロッサム');
krsort($myarray);
foreach($myarray as $key => $value) { echo $key . '=>' . $value . '<br>'; }
実行結果
Ruby=>まつもとゆきひろ
Python=>グイド・ヴァンロッサム
Perl=>ラリー・ウォール
C++=>ビャーネ・ストロヴストルップ
キーの逆順にソートされました。
■usort関数…ユーザー定義の比較関数を使用して、配列を値でソートする
$myarray = array('Perl','C++','Ruby','Python');
//引数の2番目の文字でソートする関数
function cmp($a, $b) {
if ($a[1] == $b[1]) return 0;
return ($a[1] < $b[1]) ? -1 : 1;
}
usort($myarray, 'cmp');
foreach($myarray as $key => $value) { echo $key . '=>' . $value . '<br>'; }
実行結果
0=>C++
1=>Perl
2=>Ruby
3=>Python
配列の値の2番目の文字でソートされました。
■uksort関数…ユーザ定義の比較関数を用いて、キーで配列をソートする
$myarray = array(
'Perl' => 'ラリー・ウォール',
'C++' => 'ビャーネ・ストロヴストルップ',
'Ruby' => 'まつもとゆきひろ',
'Python' => 'グイド・ヴァンロッサム');
//引数の2番目の文字でソートする関数
function cmp($a, $b) {
if ($a[1] == $b[1]) return 0;
return ($a[1] < $b[1]) ? -1 : 1;
}
uksort($myarray, 'cmp');
foreach($myarray as $key => $value) { echo $key . '=>' . $value . '<br>'; }
配列のキーの2番目の文字でソートされました。
■uasort関数…ユーザ定義の比較関数で配列をソートし、連想インデックスを保持する
$myarray = array(
'Perl' => 'Larry Wall',
'C++' => 'Bjarne Stroustrup,',
'Ruby' => 'Matz',
'Python' => 'Guido van Rossum');
function cmp($a, $b) {
if ($a == $b) return 0;
return ($a < $b) ? -1 : 1;
}
uasort($myarray, 'cmp');
foreach($myarray as $key => $value) { echo $key . '=>' . $value . '<br>'; }
実行結果
C++=>Bjarne Stroustrup,
Python=>Guido van Rossum
Perl=>Larry Wall
Ruby=>Matz
配列の値でソートされました。
Pingback: WordPress のリンク一覧を表示するプラグイン - WINGFIELD since1995