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

uksort - ユーザー定義のアルゴリズムで、配列をキーでソートする

uksortは、ユーザー定義のアルゴリズムで、指定した配列をキーでソートする関数です。キーと値の関係は維持されません。

構文

bool uksort ( array &$array , callable $key_compare_func )

パラメータ

&$array

対象の配列。

$key_compare_func

int callback ( mixed $a, mixed $b )

比較関数。このコールバック関数は比較対象の2つの値を受け取る。関数が0を返した時に同じ、正の数を返した時に第1引数の方が大きい、負の数を返した時に第1引数の方が小さい、と判定される。

返り値

bool

ソートに成功した場合はtrue、失敗した場合はfalseを返す。

サンプルコード

<?php
	$array = [
		"c" => 1,
		"d" => 2,
		"b" => 3,
		"a" => 4,
	] ;

	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 = uksort( $array, "value_compare_func" ) ;

デモ

例えば、"b"を先頭に来るようにして並び替えるには次の通りです。

<?php
/*** このコードは編集できます。 ***/

	$array = [
		"c" => 1,
		"d" => 2,
		"b" => 3,
		"a" => 4,
	] ;

	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 = uksort( $array, "value_compare_func" ) ;

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