2013-03-12 82 views
-2

Hello所有我有一个多个数组。我正在使用这样的代码。在for循环中对对象数组进行排序

它工作一段时间,当一个测试它没有在一个循环。当我在一个循环中调用它时它显示了一个在ajax调用中的内部服务器。并没有给我任何回应。

  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())。这很可能是你的问题。尝试在sortarraybykey_returns之外定义cmpreturns

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时,我会检查它 – 2013-04-08 04:22:11