2013-03-12 4 views
-2

안녕하세요 저는 다중 배열을 가지고 있습니다. 이런 코드를 사용하고 있습니다.For 루프에서 객체 배열 정렬

루프를 사용하지 않고 테스트 할 때 약간의 시간이 걸릴 수 있습니다. 이 루프를 호출하면 아약스 호출로 내부 서버가 표시됩니다. 어떤 응답도하지 않습니다.

  function sortarraybykey_returns($oldarray) 
        { 


    if (count($oldarray) > 1) 
    { 

     function cmpreturns($a, $b) 
     { 
      if ($a->staff_distance_value < $b->staff_distance_value) 
      { 
       return -1; 
      } elseif ($a->staff_distance_value == $b->staff_distance_value) 
      { 
       return 0; 
      } else 
      { 
       return 1; 
      } 
     } 

     usort($oldarray, "cmpreturns"); 
    } 

    return $oldarray; 
} 

Array 
(
    [0] => stdClass Object 
     (
      [ID] => 1 
      [name] => Mary Jane 
      [count] => 420 
     ) 

    [1] => stdClass Object 
     (
      [ID] => 2 
      [name] => Johnny 
      [count] => 234 
     ) 

    [2] => stdClass Object 
     (
      [ID] => 3 
      [name] => Kathy 
      [count] => 4354 
     ) 

답변

1

함수 내에 함수를 정의했습니다. 한 번만 함수를 정의 할 수 있으므로 sortarraybykey_returns을 두 번째 호출하면 치명적 오류 (Fatal error: Cannot redeclare cmpreturns())가 발생합니다. 이것은 당신이 가지고있는 문제 일 가능성이 큽니다. cmpreturnssortarraybykey_returns 외부에 정의 해보십시오.

function cmpreturns($a, $b) 
{ 

    if ($a->staff_distance_value < $b->staff_distance_value) 
    { 
     return -1; 
    } 

    elseif ($a->staff_distance_value == $b->staff_distance_value) 
    { 
     return 0; 
    } 

    else 
    { 
     return 1; 
    } 

} 

function sortarraybykey_returns($oldarray) 
{ 

    if (count($oldarray) > 1) 
    { 
    usort($oldarray, "cmpreturns"); 
    } 

    return $oldarray; 

} 
+0

감사합니다. 그러나 나는 아직 그것을 점검하지 않았다. 내가 PHP에 돌아올 때 그것을 확인합니다 –