php中使用Iterator,ArrayAccess和Countable【转】

来源:赵克立博客 分类: PHP 标签:PHP数组发布时间:2019-06-17 17:13:08最后更新:2019-06-17 17:14:01浏览:70
版权声明:
本文为博主学习过程中整理发布,如有侵权请告知
温馨提示:
技术类文章有它的时效性,请留意文章更新时间以及软件的版本
更新时间:
2019-06-17 17:14:01

Iterator

迭代器往往被我们用来在数据库中读取大量的数据时方便数据的管理。

class Basket implements Iterator{
    private $fruits = array('apple', 'banna', 'pear', 'orange', 'watermelon');
    private $position = 0; 
    
    //返回当前的元素
    public function current(){
        return $this->fruits[$this->position];
    }
    //返回当前的键
    public function key(){
        return $this->position
    }
    //下移一个元素
    public function next(){
        ++$this->position;
    }
    
    //移动到第一个元素
    public function rewind(){
        $this->position = 0;
    }
    //判断后续是否还有元素
    public function valid(){
        return isset($this->fruits[$this->position+1]);
    }
    
}

 

ArrayAccess

使对象中的数据可以像数组一样访问

class obj implements ArrayAccess{
    private $container = array();
 
    public function __construct(){
        $this->container = array(
            "one" => 1,
            "two" => 2,
            "three" => 3
            
        );
    }
    
    //赋值
    public function offsetSet($offset, $value){
        if(is_null($offset)){
            $this->container[] = $value;
        } else {
            $this->container[$offset] = $value;
        }
    }
    
    //某键是否存在
    public function offsetExists($offset){
        return isset($this->container[$offset]);
    }
    
    //删除键值
    public function offsetUnset($offset){
        unset($this->container[$offset]);
    }
    
    //获取键对应的值
    public function offsetGet($offset){
        return isset($this->container[$offset])?$this->container[$offset]:null;
    }
}
 
$obj = new obj();
var_dump(isset($obj["two"]));
var_dump($obj["two"]);
unset($obj["two"]);
var_dump(isset($obj["two"]));
$obj['two'] = "A value";
 
var_dump($obj['two']);
echo $obj['two'];
$obj[] = 'Append 1';
$obj[] = 'Append 2';
$obj[] = 'Append 3';
var_dump($obj);

Countable

使对象可以对属性进行计数

class Basket implements Countable{
    private $fruits = array('apple', 'banna', 'pear', 'orange', 'watermelon');
    public function count(){
        return count($this->fruits);
    }
}
 
$basket = new Basket();
echo count($basket);



微信号:kelicom QQ群:215861553 紧急求助须知
点击更换验证码
Win32/PHP/JS/Android/Python