使用了无效的操作数类型:array_uinteract需要个数组


Invalid operand type was used: array_uintersect expects array(s)

我有以下代码,用于获取可变数量数组的交集。

$intersection = call_user_func_array('array_uintersect', $params);

使用测试数据,这非常有效。然而,当使用真实数据(这是一个大得多的数据集,使用相同的代码,但在hhvmnginx上运行(时,当比较三个或多个阵列时,我会得到以下错误:

Invalid operand type was used: array_uintersect expects array(s)

比较两个数组效果良好。

我已经检查了服务器上$params的输出,它的值肯定是正确的。$params的所有元素都是数组,最后一个元素是一个值为array_compare的数组,这是我的自定义数组比较函数的名称。

是什么原因导致了这个错误?

更新:

我将HHVM更新到了最新的夜间版本,还升级了服务器的内存,看看它是否会有所帮助。然而,事实并非如此。

更新:

我现在意识到,Laravel Homestead默认情况下不使用hhvm,打开后:

sites:
- map: homestead.app
  to: /home/vagrant/Code/project
  hhvm: true

这个错误也是用我的测试数据重现的。当关闭hhvm时,交叉口工作得很好。

这看起来像是HHVM中的一个bug。我冒昧地为您提交了一份问题:https://github.com/facebook/hhvm/issues/5585你可以跟随那里了解更多更新。