uasort - ユーザー定義のアルゴリズムで、配列をキーと値の関係を維持したままソートする
uasortは、ユーザー定義のアルゴリズムを使って、配列のキーと値の組み合わせを維持したままソートする関数です。ソート判定で複数の要素が同じ順番になる場合、並び順は不定になります。この関数は元の配列を変更します。
構文
パラメータ
&$array
対象の配列。
$value_compare_func
int callback ( mixed $a, mixed $b )
比較関数。このコールバック関数は比較対象の2つの値を受け取る。関数が0を返した時に同じ、正の数を返した時に第1引数の方が大きい、負の数を返した時に第1引数の方が小さい、と判定される。
返り値
bool
ソートに成功した場合はtrue、失敗した場合はfalseを返す。
サンプルコード
<?php
$array = [ "c", "d", "b", "a" ] ;
function value_compare_func( $a, $b ) {
// "b"は必ず比較で負ける
if ( $a == "b" ) return -1 ;
if ( $b == "b" ) return 1 ;
// 他は自然な処理
if ( $a == $b ) {
return 0 ;
} else {
return $a > $b ? 1 : -1 ;
}
}
$response = uasort( $array, "value_compare_func" ) ;
デモ
例えば、"b"
を先頭に来るようにして並び替えるには次の通りです。キーと値の関係が維持されています。
<?php
/*** このコードは編集できます。 ***/
$array = [ "c", "d", "b", "a" ] ;
function value_compare_func( $a, $b ) {
// "b"は必ず比較で負ける
if ( $a == "b" ) return -1 ;
if ( $b == "b" ) return 1 ;
// 他は自然な処理
if ( $a == $b ) {
return 0 ;
} else {
return $a > $b ? 1 : -1 ;
}
}
$response = uasort( $array, "value_compare_func" ) ;
var_dump( $response ) ;
print_r( $array ) ;
参考
- PHP: uasort
- PHPの公式リファレンス。
関連記事
- uksort
- ユーザー定義のアルゴリズムで、配列をキーでソートする。
- usort
- ユーザー定義のアルゴリズムで、配列を値でソートする。
- natsort
- 配列を値で自然順にソートする。
- array_intersect_uassoc
- ユーザー定義のアルゴリズムで、複数の配列の中から共通の要素を確認する。
- array_diff_ukey
- ユーザー定義のアルゴリズムで、配列のキーの差異を確認する。
- asort
- 配列をキーと値の関係を維持したままソートする。