我有一个用户定义的排序函数,它使用“全局”声明以便在决定正确的排序顺序时引用多维数组。它曾经在 PHP 5.1.6 下工作正常,但现在在 5.3.3 下失败。
代码抛出 PHP 警告:
PHP 警告:uksort(): 数组被用户比较函数修改
但是代码绝对不会修改数组。
这段代码重复了这个问题:
$arr = array();
$arr['i1']['val1'] = 99;
$arr['i1']['val2'] = 100;
$arr['i2']['val1'] = 89;
$arr['i2']['val2'] = 101;
function cmp($a, $b)
{
global $arr;
if ($arr[$a]['val2'] > $arr[$b]['val2']) { return 1; }
if ($arr[$a]['val2'] < $arr[$b]['val2']) { return -1; }
return 0;
}
if (uksort($arr, 'cmp'))
{
echo "success";
}
else
{
echo "failure";
}