Fatal error: Cannot redeclare class iterator in E:\WEB\exp\class\static.php on line 4
下面是代码
<?
interface iterator{
function current();
function key();
function next();
function valid();
function rewind();
}class datahandler implements iterator{
private function __construct($arr){
if(is_array($arr)){
$this->array=$arr;
}
} public function current(){
return current($this->array);
}
public function key(){
return key($this->array);
}
public function next(){
return key($this->array);
}
public function valid(){
return $this->current() !== false;
}
public function rewind(){
reset($this->array);
}
}$new_array = array("a","b","c","d","e");
$object=new datahandler($new_array);
echo "iterating over the object:<br>";
foreach ($object as $key => $value){
echo $key."=>".$value."<br>";
}
?>

解决方案 »

  1.   

    估计前面或者include里面已经定义过一次
      

  2.   

    我把iterator改成iterator1了
    没有错误了
    但是数组的ABCDE输不出来
    是不是哪里有问题?
    只输出了这个
    iterating over the object:
      

  3.   

    完整的,再帮忙看看,谢谢
    interface iterator1{
    function current();
    function key();
    function next();
    function valid();
    function rewind();
    }class datahandler implements iterator1{
    private $array=array();
    public function _construct($arr){
    if(is_array($arr)){
    $this->array=$arr;
    }
    }
    public function current(){
    return current($this->array);
    }
    public function key(){
    return key($this->array);
    }
    public function next(){
    return key($this->array);
    }
    public function valid(){
    return $this->current() !== false;
    }
    public function rewind(){
    reset($this->array);
    }
    }$new_array = array("a","b","c","d","e");
    $object=new datahandler($new_array);
    echo "iterating over the object:<br>";
    foreach ($object as $key => $value){
    echo $key."=>".$value."<br>";
    }
      

  4.   

    楼主啊
    你的类中只有一个属性rivate $array=array();
    还是个空的,你想输出什么啊?
      

  5.   

    _construct也写错了(__construct)
    还有构造函数中$this已经不是纯当前类本身了
      

  6.   

    最终改成public function __construct($arr){
    if(is_array($arr)){
    $this->array=$arr;
    }
      

  7.   

    _construct少个_吧,应该是__construct
    还有
    foreach ($object as $key => $value){
    echo $key."=>".$value."<br>";
    }其中$object是个对象.你怎么能用foreach去循环呢?
    在你的构造函数中给array赋值,并没有返回值。你在这块可以写$arr = $object->array;不过你的类中的array得改成public.不然私有成员是在外面访问不了的.或者使用__get()方法获取。
      

  8.   

    我在学习啊,我也不懂
    private $array=array();
    这句我屏蔽了
    把你上面的放上去了,
    /private $array=array();
    public function __construct($arr){
    if(is_array($arr)){
    $this->array=$arr;
    }
    }
    打印出来是这个啊,
    iterating over the object:
    array=>Array
    里面的没有出来
    能在看看吗?
      

  9.   

    我改成
    $new_array = array("a","b","c","d","e");
    $object=new datahandler($new_array);
    $arr = $object->array;
    echo "iterating over the object:<br>";
    foreach ($arr as $key => $value){
    echo $key."=>".$value."<br>";
    }
    出来了
    谢谢大家