+ -
当前位置:首页 → 问答吧 → 求解 SplObjectStorage::removeAllExcept

求解 SplObjectStorage::removeAllExcept

时间:2013-05-23

来源:互联网

本帖最后由 lee_001 于 2013-5-23 21:19 编辑

如下测试代码:
<?php
                $o1 = new StdClass;
                $o2 = new StdClass;
                $o3 = new DateTime;

                $a = new SplObjectStorage();
                $b = new SplObjectStorage();

                $a->attach($o1,'o1');

                $b->attach($o1,'o1o');
                $b->attach($o2,'o2o');
                $b->attach($o3,'o3o');

                echo '<pre>';
                var_dump(count($b));
                print_r($b);
                $b->removeAllExcept($a);
                var_dump(count($b));
                print_r($b);
?>

如上代码 removeAllExcept 后 count($b) 应该为1但是为什么是2呢? 求解

作者: lee_001   发布时间: 2013-05-23

如下是我本地的输出打印结果:(注:PHP版本 5.3.8)
int 3
SplObjectStorage Object
(
    [storage:SplObjectStorage:private] => Array
        (
            [000000002a9a73d4000000007b6aed82] => Array
                (
                    [obj] => stdClass Object
                        (
                        )

                    [inf] => o1o
                )

            [000000002a9a73d7000000007b6aed82] => Array
                (
                    [obj] => stdClass Object
                        (
                        )

                    [inf] => o2o
                )

            [000000002a9a73d6000000007b6b74ca] => Array
                (
                    [obj] => DateTime Object
                        (
                            [date] => 2013-05-23 20:57:34
                            [timezone_type] => 3
                            [timezone] => Etc/GMT-8
                        )

                    [inf] => o3o
                )

        )

)
int 2
SplObjectStorage Object
(
    [storage:SplObjectStorage:private] => Array
        (
            [000000002a9a73d4000000007b6aed82] => Array
                (
                    [obj] => stdClass Object
                        (
                        )

                    [inf] => o1o
                )

            [000000002a9a73d6000000007b6b74ca] => Array
                (
                    [obj] => DateTime Object
                        (
                            [date] => 2013-05-23 20:57:34
                            [timezone_type] => 3
                            [timezone] => Etc/GMT-8
                        )

                    [inf] => o3o
                )

        )

)

作者: lee_001   发布时间: 2013-05-23