2012-01-19 2 views
1

나는 array_merge를 사용하여 두 개의 배열을 결합했으며 이제 알파벳 순으로 정렬해야합니다. 문제는 서로 다른 두 개의 키를 비교해야합니다.PHP usort 비교 함수

예 :

사과 :

[0] => stdClass Object 
(
[id] => 16 
[title] => Oranges 
) 

[1] => stdClass Object 
(
[id] => 23 
[title] => Apples 
) 

[2] => stdClass Object 
(
[id] => 16 
[name] => Bananas 
) 

나는 나의 결과가 될 수 있도록, 다음 (ID를 무시) 순으로 사람들을 정렬뿐만 아니라 '제목'속성이 서로 '이름'속성을 비교해야
바나나
오렌지 그러나

는, 함수는 여기있다 :

function compareItems($a, $b) 
{ 
if ($a->title < $b->title) return -1; 
if ($a->title > $b->title) return 1; 
if ($a->name < $b->name) return -1; 
if ($a->name > $b->name) return 1; 
return 0; 
} 

usort($array, "compareItems"); 

... 이렇게 나에게주는 결합하지만, 속성 (제목) 다음 다른 (이름) 한 세트를 정렬하지 않습니다

사과
을 오렌지
바나나

나는 내가 할 수 바라고 있어요 이 함수를 수정하여 두 함수를 병합하십시오. 저는 PHP 프로그래머가 아니므로 모든 도움을 받으실 수 있습니다!

미리 감사드립니다.

답변

3

내가 당신을 위해 작동합니다 아래가 비교 기능 :

function compareItems($a, $b) 
{ 
    $x = isset($a->title) ? $a->title : $a->name; 
    $y = isset($b->title) ? $b->title : $b->name; 
    return strcmp($x, $y); 
} 
+0

는 빠른 응답 주셔서 감사 - 완벽하게 작동합니다! – traummaschine

+0

@RT : 도움이 된 것을 기쁘게 생각합니다! 녹색 체크 표시를 클릭하여이 질문에 답을 표시해야합니다. –