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

Posted

技术标签:

【中文标题】使用了无效的操作数类型:array_uintersect 需要数组【英文标题】:Invalid operand type was used: array_uintersect expects array(s) 【发布时间】:2015-07-04 01:26:08 【问题描述】:

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

$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 时,交叉口完美运行。

【问题讨论】:

【参考方案1】:

这看起来像是 HHVM 中的一个错误。我冒昧地为您提交了一个问题:https://github.com/facebook/hhvm/issues/5585您可以在那里关注更多更新。

【讨论】:

以上是关于使用了无效的操作数类型:array_uintersect 需要数组的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu使用了无效的拖放类型

类型的无效操作数 - C++

HSQLDB:重复的列名,不支持的内部操作:类型,强制转换字符无效

错误:“int”和“<未解析的重载函数类型>”类型的无效操作数到二进制“operator/”

错误消息:“float”和“int”类型的无效操作数到二进制“operator%”

在 iTunes 上上传构建时捆绑操作系统类型代码无效