PHPでウェブの世界と繋がろう!
menu
ホーム > PHPサンプル > 配列系 > 値によるソートをしたい(ユーザ定義順)

値によるソートをしたい(ユーザ定義順)

Pocket

サンプルコード sample code
配列ソート 値によるソート ユーザ定義順 usort()
論理値 = usort(配列, コールバック関数名);
ユーザー定義の比較関数に従って、配列の各要素の値で並び替えます。成功した場合に TRUE を、失敗した場合に FALSE を返します。
POINT

  • 配列要素の値が基準となる
  • キーと値の相関関係は維持しない
  • 比較結果が等しくなるメンバーが複数存在する場合、 ソート後の配列でのそれらのメンバーの並び順は未定義となる
  • この関数は、 array パラメータの要素に対して新しいキーを割り当てる。その際、単純にキーを並べ替える代わりに、すでに割り当てられている既存のキーを削除する
  • 比較関数は、最初の引数と2番目の引数の比較結果を返えす。最初の引数のほうが2番目の引数より大きい場合は正の数を、2番目の引数と等しい場合はゼロを、そして2番目の引数より小さい場合は負の数を返す必要がある

サンプルコード

– サンプル Click Here ! –

<h3>配列ソート ユーザ定義の比較関数によるソート</h3>
<?php
//ユーザー定義関数
function cmp($a, $b){
    if($a == $b){
        return 0;
    }
    return($a < $b) ? -1 : 1;
}

//配列
$ary = array(3, 2, 5, 6, 1);

//ソート前
foreach($ary as $key => $value){
    print "キー(\$key) : {$key} 値(\$value) : {$value}<br/>\n";
}

//ソート後
echo 'usort後↓<br/>';
usort($ary, "cmp");
foreach($ary as $key => $value){
    print "キー(\$key) : {$key} 値(\$value) : {$value}<br/>\n";
}
?>

<h3>配列ソート ユーザ定の比較関数によるソート キー:nameでソート</h3>
<?php
//比較関数
function sort_by_name($a, $b){
	if ($a&#91;'name'&#93; == $b&#91;'name'&#93;){
		return 0;
	}
	return ($a&#91;'name'&#93; < $b&#91;'name'&#93;) ? -1 : 1;
}
//配列
$ary = array(
	array('idno' => 1, 'name' => 'sato'),
	array('idno' => 2, 'name' => 'yamada'),
	array('idno' => 3, 'name' => 'tanaka'),
	array('idno' => 4, 'name' => 'suzuki'),
	array('idno' => 5, 'name' => 'yokota'),
);
//nameでソート
usort($ary, "sort_by_name");
//配列の展開
foreach($ary as $value){
	foreach($value as $key2 => $value2){
		print "キー : {$key2} 値 : {$value2}<br/>\n";
	}
	echo "------------------------<br/>\n";
}
?>
実行結果
配列ソート ユーザ定義の比較関数によるソート
キー($key) : 0 値($value) : 3
キー($key) : 1 値($value) : 2
キー($key) : 2 値($value) : 5
キー($key) : 3 値($value) : 6
キー($key) : 4 値($value) : 1
usort後↓
キー($key) : 0 値($value) : 1
キー($key) : 1 値($value) : 2
キー($key) : 2 値($value) : 3
キー($key) : 3 値($value) : 5
キー($key) : 4 値($value) : 6

配列ソート ユーザ定の比較関数によるソート キー:nameでソート
キー : idno 値 : 1
キー : name 値 : sato
————————
キー : idno 値 : 4
キー : name 値 : suzuki
————————
キー : idno 値 : 3
キー : name 値 : tanaka
————————
キー : idno 値 : 2
キー : name 値 : yamada
————————
キー : idno 値 : 5
キー : name 値 : yokota
————————

– サンプル Click Here ! –


タグ(=記事関連ワード)

タグ: , ,

日付

投稿日:2012年3月22日
最終更新日:2014年02月20日

関連記事

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

http://www.tryphp.net/phpsample-array-usort/trackback/