-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

関数内で関数を定義しました。関数は 1 回しか定義できないためsortarraybykey_returns、2 回目に呼び出すと致命的なエラー ( Fatal error: Cannot redeclare cmpreturns()) が発生します。これはおそらくあなたが抱えている問題です。cmpreturnsの外で定義してみてくださいsortarraybykey_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 に答える