1

我试图理解ArrayObject::STD_PROP_LIST const,正如它在手册中定义的那样:

当作为列表(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_dump 你看不到它们,我还测试了 foreach 和 foreach 循环对 arrayObj 对象和 arrayObj2 对象都有效。

如果有人可以向我解释什么是正常功能以及为什么没有显示第二个 var_dump 元素,谢谢大家,祝您有美好的一天。

4

1 回答 1

2

确定您使用的是任何 <= 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 版本

于 2012-09-13T11:34:44.300 回答