了ArrayAccess / ArrayObject的不与像call_user_func_array

2019-10-17 08:44发布

当实现使用对象ArrayAccessArrayObject ,一些操作这是一个完全正常的阵列(例如一foreach()语句)。 然而,其他人都没有这么容易上当,却还在抱怨它是一个对象:

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

这令我incosistent。 一个人能解释这背后的原因何在呢? 有没有解决的办法?

我需要这种支持后端代码。 它需要一个阵列(作为一个参数传递给call_user_func_array()有时修改它。 我需要镜像到阵列不过新的变量所做的任何更改,所以这就是为什么我试图通过做ArrayAccess对象(更多信息在这里 )。

Answer 1:

泰丰函数名是相当明确的,并且在文档中描述表明它为什么需要数组

该解决方案是包装的阵列内的对象

call_user_func_array('callback', array( $myObject));


Answer 2:

一般来说,你不能使用ArrayObject或和ArrayAccess实施者与阵列上运行原生功能。 您可以与通常使用数组表示法遍历并没有什么语言结构中使用它们。



文章来源: ArrayAccess/ArrayObject do not work with functions like call_user_func_array() [closed]