使用ArrayAccess
或ArrayObject
实现对象时,对于某些操作,它是一个完全正常的数组(例如foreach()
语句)。然而,其他人并没有那么容易被愚弄,仍然抱怨它是一个对象:
[E_WARNING] call_user_func_array() expects parameter 2 to be array, object given
这让我感到无所适从。有人可以解释这背后的原因吗?有没有解决的办法?
我需要这个来支持后端代码。它需要一个数组(作为参数传递给call_user_func_array()
),有时会修改它。我需要将对数组所做的任何更改镜像到新变量,这就是为什么我尝试通过ArrayAccess
对象进行操作(更多信息here)。
答案 0 :(得分:1)
Thye函数名称非常明确,description in the documents表示它需要数组的原因
解决方案是将对象包装在数组
中call_user_func_array('callback', array( $myObject));
答案 1 :(得分:0)
一般来说,你不能使用ArrayObject
或ArrayAccess
实现者与在数组上运行的本机函数。您可以将它们与通常使用数组表示法进行遍历的语言结构一起使用,而不是。