【发布时间】:2012-05-21 08:38:52
【问题描述】:
我尝试修改 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() 返回非法类型
我该如何解决?
【问题讨论】:
-
当你提到一个资源时,你能至少张贴网址吗?
-
PHP 5.5 将是第一个允许键既不是整数也不是字符串的 PHP 版本。文档:wiki.php.net/rfc/foreach-non-scalar-keys