Hello All我有一个多数组。我正在使用这样的代码。
它可以在没有循环的情况下进行测试。当我在循环中调用它时它在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
)
答案 0 :(得分:1)
您已在函数中定义了一个函数。由于函数只能定义一次,因此第二次调用sortarraybykey_returns
将导致致命错误(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;
}