Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP';s SPL:它涉及数组的接口是否覆盖了所有数组属性?_Php_Arrays_Spl - Fatal编程技术网

PHP';s SPL:它涉及数组的接口是否覆盖了所有数组属性?

PHP';s SPL:它涉及数组的接口是否覆盖了所有数组属性?,php,arrays,spl,Php,Arrays,Spl,通过实现所有必要的SPL接口,是否可以编写一个实际上与实际PHP数组无法区分的类?他们是否遗漏了重要的内容 我想构建一个更高级的数组对象,但我想确保,如果用自定义数组类替换数组,我不会破坏任何地方都使用数组的现有应用程序。我能想到的唯一问题是gettype()和is_Array()函数。 检查您的代码是否有错误 gettype($FakeArray) == 'array' is_array($FakeArray) 因为尽管可以像使用数组一样使用对象,但它仍然会被标识为对象 其他差异包括数组(

通过实现所有必要的SPL接口,是否可以编写一个实际上与实际PHP数组无法区分的类?他们是否遗漏了重要的内容


我想构建一个更高级的数组对象,但我想确保,如果用自定义数组类替换数组,我不会破坏任何地方都使用数组的现有应用程序。

我能想到的唯一问题是gettype()和is_Array()函数。 检查您的代码是否有错误

gettype($FakeArray) == 'array' 
is_array($FakeArray)

因为尽管可以像使用数组一样使用对象,但它仍然会被标识为对象

其他差异包括数组(合并)的“+”运算符和整个
数组*
功能的故障,包括常用的
数组u合并
数组u移位

以及上述要点,您将无法使用户空间数组类型提示与类的实例一起使用。例如:

<?php
function f(array $a) { /*...*/ }

$ao = new ArrayObject();
f($ao); //error
?>

即使这样,看起来我也可以使用override_function()函数来覆盖这些函数,以考虑其他情况。
Catchable fatal error: Argument 1 passed to f() must be an array, object given