(PHP 4, PHP 5)
usort — 사용자 정의 비교 함수를 사용하여 값에 의한 배열 정렬
이 함수는 사용자 제공 비교 함수를 사용하여 값들에 의해 배열을 정렬할 것이다. 정렬하고자 하는 배열이 흔히 사용되지 않는 방법에 의해 정렬할 필요가 있으면, 이 함수를 사용해야 한다.
Note: 두 멤버가 같은 것으로 비교되면, 정렬한 배열에서 그들의 순서는 정의되지 않습니다.
Note: 이 함수는 array 에 새로운 키를 할당합니다. 이 작업은 단순히 키를 재배열할 뿐만 아니라, 이미 할당되어 있는 키를 제거할 수 있습니다.
입력 배열.
비교 함수는 첫번째 인수가 두번째 인수보다 작거나, 같거나, 크다고 판단되면 0 보다 작거나, 같거나, 큰 정수를 반환해야 한다.
성공할 경우 TRUE를, 실패할 경우 FALSE를 반환합니다.
버전 | 설명 |
---|---|
4.1.0 | 새 정렬 알고리즘이 도입되었습니다. cmp_function 은 같다고 비교되는 원소의 순서를 유지하지 않습니다. |
Example #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");
foreach ($a as $key => $value) {
echo "$key: $value\n";
}
?>
위 예제의 출력:
0: 1 1: 2 2: 3 3: 5 4: 6
Note: 명백히 이런 흔한 경우에는 sort() 함수가 더욱 적절할것이다.
Example #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
Example #3 객체의 멤버 함수를 사용하는 usort() 예제
<?php
class TestObj {
var $name;
function TestObj($name)
{
$this->name = $name;
}
/* 정적 비교 함수: */
static 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");
usort($a, array("TestObj", "cmp_obj"));
foreach ($a as $item) {
echo $item->name . "\n";
}
?>
위 예제의 출력:
b c d