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

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 中的错误。我冒昧地为您提交了一个问题:https://github.com/facebook/hhvm/issues/5585您可以关注那里以获取更多更新。