IT/php

php usort — 사용자 정의 비교 함수를 사용하여 값으로 배열 정렬

조원태 2016. 12. 11. 11:14
반응형

usort — 사용자 정의 비교 함수를 사용하여 값으로 배열 정렬


[Description]

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


이 함수는 사용자 제공 비교 함수를 사용하여 값으로 배열을 정렬합니다. 정렬하려는 배열을 중요한 기준으로 정렬해야하는 경우이 함수를 사용해야합니다.


Note:

두 멤버가 동등한 것으로 비교되는 경우 정렬 된 배열에서 상대적인 순서는 정의되지 않습니다.

참고 :이 함수는 배열에있는 요소에 새 키를 할당합니다. 키를 재정렬하는 것이 아니라 할당 된 기존 키를 제거합니다.


[Parameters]

array

입력 배열입니다.


value_compare_func


첫 번째 인수가 각각 두 번째 인수보다 작거나 같거나 큰 것으로 간주되면 비교 함수는 0보다 작거나 같은 정수 또는 큰 정수를 반환해야합니다. PHP 7.0.0 이전에는이 ​​정수가 -2147483648에서 2147483647 사이 여야했습니다.


int callback ( mixed $a, mixed $b )


Caution

float와 같은 비교 함수에서 비 정수 값을 반환하면 콜백 반환 값의 정수로 내부 캐스트가됩니다. 따라서 0.99와 0.1 같은 값은 모두 정수 값 0으로 형변환되며,이 값은 같은 값을 같은 것으로 비교합니다.


[Return Values]

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.


Example #1 usort() example


<?php

function cmp($a, $b)

{

    if ($a == $b) {

        return 0;

    }

    return ($a < $b) ? -1 : 1;

}


$a = array(3, 2, 5, 6, 1);


usort($a, "cmp");


foreach ($a as $key => $value) {

    echo "$key: $value\n";

}

?>

output:

0: 1

1: 2

2: 3

3: 5

4: 6




<?php

function cmp($a, $b)

{

    return strcmp($a["fruit"], $b["fruit"]);

}


$fruits[0]["fruit"] = "lemons";

$fruits[1]["fruit"] = "apples";

$fruits[2]["fruit"] = "grapes";


usort($fruits, "cmp");


while (list($key, $value) = each($fruits)) {

    echo "\$fruits[$key]: " . $value["fruit"] . "\n";

}

?>

output:


$fruits[0]: apples

$fruits[1]: grapes

$fruits[2]: lemons

반응형