PHP 매뉴얼
이전 |  | 다음

# usort

(PHP 3>= 3.0.3, PHP 4 , PHP 5)

usort -- 사용자-정의된 비교함수를 사용하여 값들에 의해 배열을 정렬한다

## 설명

void usort ( array array, callback cmp_function)

이 함수는 사용자-지원 비교 함수를 사용하여 값들에 의해 배열을 정렬할 것이다. 정렬하고자 하는 배열이 흔히 사용되지 않는 방법에 의해 정렬할 필요가 있으면, 이 함수를 사용해야 한다.

비교 함수는 첫번째 인자가 두번째 인자보다 작거나, 같거나, 크다고 판단되면 0 보다 작거나, 같거나, 큰 정수를 반환해야 한다.

> 참고: 두 인자들이 같다면, 정렬된 배열에서 그들 순서는 알 수 없다. PHP 4.0.6 까지 사용자 정의 함수는 그들 원소에 대해서 원래의 순서를 유지할것이다. 그러나 4.1.0부터 사용되는 새로운 정렬 알고리즘에서는 더이상 그런 경우에 효율적인 방법의 그런 동작을 하는 해결책이 존재하지않는다.

예 1. usort() 예제코드

`<?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"); while (list ($key, $value) = each ($a)) { echo "$key: $value\n"; } ?>`

위 예제코드는 다음을 출력할것이다:

    0: 1
    1: 2
    2: 3
    3: 5
    4: 6

> 참고: 명백히 이런 흔한 경우에는 sort() 함수는 더욱 적절할것이다.

예 2. 다차원 배열을 사용하는 usort() 예제코드

`<?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"; } ?>`

다차원 배열을 정렬할 때에는, $a와 $b는 배열의 첫번째 인덱스의 참조를 포함한다.

위 예제코드는 다음을 출력할것이다:

    $fruits[0]: apples
    $fruits[1]: grapes
    $fruits[2]: lemons

예 3. 객체의 멤버 함수를 사용하는 usort() 예제코드

`<?php
class TestObj {
var $name;
function TestObj($name)
{
$this->name = $name;
}
/* This is the static comparing function: */
function cmp_obj($a, $b)
{
$al = strtolower($a->name);
$bl = strtolower($b->name);
if ($al == $bl) return 0;
return ($al > $bl) ? +1 : -1;
}
}
$a[] = new TestObj("c");
$a[] = new TestObj("b");
$a[] = new TestObj("d");
uasort($a, array ("TestObj", "cmp_obj"));
foreach ($a as $item) {
print $item->name."\n";
}
?>`

위 예제코드는 다음을 출력한다:

    b
    c
    d

uasort(), uksort(), sort(), asort(), arsort(),ksort(), natsort(), rsort() 참고.

이전 | 처음으로 | 다음
uksort | 위로 | Aspell 함수 [deprecated]