PHPの配列をソートするいろいろな方法

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

配列の値でソートされました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください