1

使用ArrayAccessor实现对象时ArrayObject,对于某些操作,它是一个完全正常的数组(例如foreach()语句)。然而,其他人并不那么容易被愚弄,并且仍然抱怨它是一个对象:

[E_WARNING] call_user_func_array() expects parameter 2 to be array, object given

这让我觉得前后矛盾。有人可以解释这背后的原因吗?有没有解决的办法?

我需要它来支持后端代码。它需要一个数组(作为参数传递给call_user_func_array()),并且有时会修改它。但是,我需要将对数组所做的任何更改镜像到新变量,这就是为什么我尝试通过ArrayAccess对象来执行此操作(更多信息here)。

4

2 回答 2

1

Thye 函数名称非常明确,文档中的描述说明了为什么它需要一个数组

解决方案是将对象包装在数组中

call_user_func_array('callback', array( $myObject));
于 2012-10-30T14:04:48.200 回答
0

一般来说,您不能将ArrayObjector 和ArrayAccessimplementationor 与操作数组的本机函数一起使用。您可以将它们与通常使用数组表示法进行遍历的语言结构一起使用。

于 2012-10-30T14:11:41.797 回答