2010-04-14 5 views
1

저는 Perl에서 PHP로 옮겨 가고 있습니다. PHP 정렬에 대한 내 머리를 얻으려고 애를 쓰고 있습니다.PHP에서 키를 사용하여 다차원 해시 배열을 세 단계로 정렬하는 방법은 무엇입니까?

는 여기에 내가 펄에있는 내용은 다음과 같습니다 기본적으로

$log{'11111'}{'1'}{'20100102'}{'name'}='blah'; 
$log{'11111'}{'1'}{'20100101'}{'name'}='blah'; 
$log{'11111'}{'1'}{'20100103'}{'name'}='blah'; 

$cook='11111'; 

foreach $entry (sort {$log{$cook}{$a}{time} cmp $log{$cook}{$b}{time}} keys %{$log{$cook}}){ 
     ... 
     } 

, 나는 PHP에서 동일한 배열 구조를 가지고 있지만 내가 위에서처럼 정렬 할 것입니다.

+3

의 작업 맙소사을 할 것 비교 콜백 기능을 제공합니다. 아무도 펄을 어떻게 읽을 수 있습니까? –

+5

@Coronatus 좋은 Perl이 있고 거기에 좋은 PHP가 있고 나쁜 PHP가있는 것처럼 나쁜 Perl이 있습니다. 위의 코드 조각은 두 번째 레벨 키가 모두 연속 된 정수인지 알지 못해도 분명히 나쁘다고 말할 수는 있지만 큰 시간을 느낍니다. 그렇다면 여기에있는 것은 문제에 대한 적절한 데이터 구조를 이해하는 데 실패하는 것입니다. –

+0

데이터 구조 깊은 곳에서 문자열을 정렬 할 때 필요한 데이터를 표면에 더 가까이 가져 가려면 schwartzian 변형 http://en.wikipedia.org/wiki/Schwartzian_transform을 적용하는 것이 가장 좋습니다. 변형은 Perl과 PHP에서 똑같이 중요합니다. –

답변

0

usort 기능이 필요합니다.

당신은

{$log{$cook}{$a}{time} cmp $log{$cook}{$b}{time}} 
관련 문제