2012-09-03 2 views
-1

안녕하세요 실제로 다른 키를 사용하여 세 번째 수준에서 배열을 정렬하려고합니다.PHP ARRAY 정렬 세 번째 수준에서

다음은 샘플 배열 입력입니다.

Array 
(
    [19067] => Array 
     (
      [Morrisville, PA] => 5.02 
     ) 

    [18977] => Array 
     (
      [Washington Crossing, PA] => 6.63 
     ) 

    [08695] => Array 
     (
      [Trenton, NJ] => 2.84 
     ) 

    [08690] => Array 
     (
      [Trenton, NJ] => 1 
     ) 

    [08666] => Array 
     (
      [Trenton, NJ] => 2.84 
     ) 

    [08650] => Array 
     (
      [Trenton, NJ] => 0 
     ) 

    [08648] => Array 
     (
      [Lawrence Township, NJ] => 2.88 
     ) 

    [08647] => Array 
     (
      [Trenton, NJ] => 2.84 
     ) 

    [08646] => Array 
     (
      [Trenton, NJ] => 2 
     ) 

) 

것은 어떤 몸은 세 번째 수준에서 위의 배열을 정렬하는 데 도움이 수

예상 결과는 좋아한다 :

출력 : 사전에

Array 
(
    [08650] => Array 
     (
      [Trenton, NJ] => 0 
     ) 

    [08690] => Array 
     (
      [Trenton, NJ] => 1 
     ) 

    [08646] => Array 
     (
      [Trenton, NJ] => 2 
     ) 

    [08666] => Array 
     (
      [Trenton, NJ] => 2.84 
     ) 

    [08695] => Array 
     (
      [Trenton, NJ] => 2.84 
     ) 

    [08647] => Array 
     (
      [Trenton, NJ] => 2.84 
     ) 

    [08648] => Array 
     (
      [Lawrence Township, NJ] => 2.88 
     ) 

    [19067] => Array 
     (
      [Morrisville, PA] => 5.02 
     ) 

    [18977] => Array 
     (
      [Washington Crossing, PA] => 6.63 
     ) 


) 

감사합니다 ..

답변

2
uasort($array, function (array $a, array $b) { 
    return current($a) - current($b); 
}); 

주석에 유의하십시오. 1.0보다 작은 값은 같은 것으로 정렬됩니다. (current($a) - current($b)) * 100을 수행하거나 원하는 값 범위에 따라 값을 반올림 할 수 있습니다.

+2

뭔가 float 값이 항상 비교 값에 대해 잘 작동하지 않는다는 것을 알 수 있습니다. 그러나 내가 어디에서 읽었는지 확실하지 않습니다./otherwise, +1 –

+0

플로트가 여기에 적합합니다. 무슨 뜻입니까?'$ foo == 1.2345'는 부동 소수점 값으로는 작동하지 않습니다. 왜냐하면 그 값이 정확하다는 보장이 없기 때문입니다. – deceze

+2

찾았습니다. 암시 적으로 정수로 변환되므로 0.1과 0.99는 항상 동일하지는 않습니다. –