usort(): 数组由用户比较函数修改
我有一个Web应用程序,在我们的Linux服务器上运行良好,但是当使用PHP 5.3在Mac OS上使用Zend Community Edition Server运行时,我们得到错误:
usort(): 数组由用户比较函数修改
每次首次加载页面时(页面勾选和加载大约需要2分钟,在linux服务器上,页面加载时间为1秒)。
有没有其他人经历过这种情况,或者知道如何解决这个问题,我尝试过玩PHP和Apache内存设置,但没有运气。
我有一个Web应用程序,在我们的Linux服务器上运行良好,但是当使用PHP 5.3在Mac OS上使用Zend Community Edition Server运行时,我们得到错误:
usort(): 数组由用户比较函数修改
每次首次加载页面时(页面勾选和加载大约需要2分钟,在linux服务器上,页面加载时间为1秒)。
有没有其他人经历过这种情况,或者知道如何解决这个问题,我尝试过玩PHP和Apache内存设置,但没有运气。
有一个PHP错误可能导致此警告,即使您不更改数组也是如此。
简短版本,如果任何PHP调试函数检查排序数组,它们将更改引用计数并欺骗您已更改数据。usort()
因此,通过在排序函数(或从中调用的任何代码)中执行以下任何操作,您将获得该警告:
var_dump
print_r
debug_backtrace()
该错误会影响所有 PHP 5 版本 >= 5.2.11,但不会影响 PHP >= 7。有关更多详细信息,请参阅错误报告。
据我所知,唯一的解决方法是“不要这样做”(这对于异常来说有点困难),或者使用错误抑制运算符来忽略所有错误。@usort()
要解决此问题,我们可以按如下方式处理
1) 使用error_reporting
$a = array('id' => 2,'val' => 3, 'ind' => 3);
$errorReporting = error_reporting(0);
usort($a);
error_reporting($errorReporting);
2)使用@usort($a);
$a = array('id' => 2,'val' => 3, 'ind' => 3);
@usort($a);