使用了无效的操作数类型: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);
使用测试数据,这非常有效。但是,当使用真实数据(这是一个更大的数据集,使用相同的代码,但在 hhvm
和 nginx
上运行时,比较三个或更多数组时出现以下错误:
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 需要数组的主要内容,如果未能解决你的问题,请参考以下文章
HSQLDB:重复的列名,不支持的内部操作:类型,强制转换字符无效
错误:“int”和“<未解析的重载函数类型>”类型的无效操作数到二进制“operator/”