SYNCERのロゴ
アイキャッチ画像

uasort - ユーザー定義のアルゴリズムで、配列をキーと値の関係を維持したままソートする

uasortは、ユーザー定義のアルゴリズムを使って、配列のキーと値の組み合わせを維持したままソートする関数です。ソート判定で複数の要素が同じ順番になる場合、並び順は不定になります。この関数は元の配列を変更します。

構文

bool uasort ( array &$array , callable $value_compare_func )

パラメータ

&$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 ) ;
bool(true)
Array
(
    [2] => b
    [3] => a
    [0] => c
    [1] => d
)
  • Twitterでシェア
  • Facebookでシェア
  • Google+でシェア
  • はてなブックマークでシェア
  • pocketに保存
  • LINEでシェア
更新履歴
2017年6月26日 (月)
コンテンツを公開しました。