Php, Spl, ArrayObject, ArrayObject::STD_PROP_LIST


Php, Spl, ArrayObject, ArrayObject::STD_PROP_LIST

我正在尝试理解ArrayObject::STD_PROP_LIST常量,如手册中所定义:

对象的属性在作为列表(var_dump、foreach等)访问时具有正常功能。

我写这个代码:

$array = array(5,7,9,3,6,5,4);
$arrayObj = new ArrayObject($array);
var_dump($arrayObj);
$arrayObj2 = new ArrayObject($arrayObj->getArrayCopy(), ArrayObject::STD_PROP_LIST);
var_dump($arrayObj2);

在第一个var_dump中,我们可以看到数组元素,但在第二个var_dmp中,我们看不到它们,我还测试了foreach和foreach循环对arrayObj对象和arrayObj2对象的工作。

如果有人能向我解释什么是正常功能,以及为什么没有提供第二个var_dump元素,谢谢大家,祝大家愉快。

我确信你在使用任何东西<=PHP版本5.3.8。它是一个错误,也检测到你会得到以下

    object(ArrayObject)#1 (7) { [0]=> int(5) [1]=> int(7) [2]=> int(9) [3]=> int(3) [4]=> int(6) [5]=> int(5) [6]=> int(4) } 
    object(ArrayObject)#2 (0) { }

如果你在PHP 5.3.10上运行,你会得到以下

    object(ArrayObject)#1 (1) { ["storage":"ArrayObject":private]=> array(7) { [0]=> int(5) [1]=> int(7) [2]=> int(9) [3]=> int(3) [4]=> int(6) [5]=> int(5) [6]=> int(4) } } 
    object(ArrayObject)#2 (1) { ["storage":"ArrayObject":private]=> array(7) { [0]=> int(5) [1]=> int(7) [2]=> int(9) [3]=> int(3) [4]=> int(6) [5]=> int(5) [6]=> int(4) } }

我认为您应该升级您的PHP 版本