【问题标题】:Count elements for objects implementing ArrayAccess using count()?使用 count() 计算实现 ArrayAccess 的对象的元素?
【发布时间】:2011-07-14 11:11:43
【问题描述】:

当一个类实现了ArrayAccess 接口时,它就可以作为一个数组使用了,包括 OffsetGet、OffsetSet 等等。

我没有看到的一件事是当我们想要 count()sizeof() 它时的实现,在我对 PHP 的有限了解中,这相当于。

有没有类似的东西已经在标准 PHP 中实现了?

【问题讨论】:

    标签: php arrays interface spl


    【解决方案1】:

    正确的方法是实现Countable interface

    Example #1 Countable::count() example

    <?php
    class myCounter implements Countable {
        public function count() {
            static $count = 0;
            return ++$count;
        }
    }
    $counter = new myCounter;
    for($i=0; $i<10; ++$i) {
        echo "I have been count()ed " . count($counter) . " times\n";
    }
    

    换句话说,您自己实现count() 应该返回的逻辑。

    【讨论】:

    • 嗯......我明白了......但这需要我写$myInstance-&gt;count()而不是count($myInstance)?我知道这很愚蠢,但我真的在寻找一种方法,让它在作为参数传递给 PHP 上的原生 count($param) 函数时返回自定义行为。
    • @Felipe 做到了。请看手册。它正在做你所要求的。更新了代码。
    • 美丽。感谢您的帮助。
    猜你喜欢
    • 2018-04-07
    • 2012-04-15
    • 1970-01-01
    • 2016-05-15
    • 2015-01-30
    • 2021-08-18
    • 2014-03-16
    • 2019-02-22
    • 1970-01-01
    相关资源
    最近更新 更多