-2

大家好,我有一个多个数组。我正在使用这样的代码。

它在没有循环的情况下进行测试时会工作一段时间。当我在循环中调用它时,它会在 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
        )
4

1 回答 1

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;

}
于 2013-03-12T13:53:54.573 回答