我试图从php.net修改示例,以尝试实现类似Java / C#的集合,其中键可能是对象(http://php.net/manual/en/language.oop5.iterations.php,示例#2):

<?php
class Test {
        private $_n;
        public function __construct($n) {
              $this->_n = $n;
        }
        public function getN() {
                return $this->_n;
        }
}
class MyIterator implements Iterator
{
    private $var = array();

   // code from php.net ....

    public function key()
    {
        $var = key($this->var);
        echo "key: $var\n";

        return new Test($var);
    }

    // code from php.net...

}

$values = array(1,2,3);
$it = new MyIterator($values);

foreach ($it as $a => $b) {
    print $a->getN() . ": $b\n";
}


但我有这样的通知:


警告:从MyIterator :: key()返回的非法类型


我该如何解决?

最佳答案

键的类型必须为标量。引起该错误的原因是您的key方法正在返回一个对象。返回字符串或数字类型,它应该可以工作。

关于php - 有没有办法在对象上使用PHP实现Iterator的对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10681945/

10-12 13:03
查看更多