1

マニュアルで定義されているように、 ArrayObject ::STD_PROP_LISTconstを理解しようとしています。

オブジェクトのプロパティは、リストとしてアクセスすると通常の機能を持ちます(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では配列要素を見ることができますが、2番目のvar_dumpではそれらを見ることができません。また、foreachとforeachループがarrayObjオブジェクトとarrayObj2オブジェクトの両方で機能することをテストしました。

誰かが私に通常の機能とは何か、そして2番目の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 に答える