您现在的位置是:首页 > PHP框架交流PHP框架交流

php把对象foreach 循环 Iterator遍历对象 php进阶

上善若水2022-01-02 15:56:28【PHP框架交流】 1613人已围观

简介php高级技术把一个对象foreach循环遍历,很多框架中都实现了Iterator 然后就可以foreach去遍历这个对象,下面简单尝试编写一个简单的demo去循环遍历对象. class A impl

php高级技术把一个对象foreach循环遍历,很多框架中都实现了Iterator 然后就可以foreach去遍历这个对象,下面简单尝试编写一个简单的demo去循环遍历对象.

class A implements \Iterator
{
    /**
     * @var array $data
     */
    public $data = [];

    public function current()
    {
        echo __FUNCTION__ . PHP_EOL;
        return current($this->data);
    }

    public function next()
    {
        echo __FUNCTION__ . PHP_EOL;
        next($this->data);
    }

    public function key()
    {
        echo __FUNCTION__ . PHP_EOL;
        return key($this->data);
    }

    public function valid()
    {
        echo __FUNCTION__ . PHP_EOL;
        return key($this->data) !== null;
    }

    public function rewind()
    {
        echo __FUNCTION__ . PHP_EOL;
        reset($this->data);
    }
}

$a = new  A();
$array = ['ak' => 'a'];
$a->data = $array;

foreach ($a as $k => $v) {
    echo 'key:' . $k . ' value:' . $v . PHP_EOL;
}

php文件执行的结果是

rewind
valid
current
key
key:ak value:a
next
valid

一个简单的demo就可以实现遍历对象,当然很多框架实现方式都是定义一个key将当前和一个value然后去实现

    /**
     * @var mixed the value for the current iteration
     */
    private $_value;
    /**
     * @var string|int the key for the current iteration
     */
    private $_key;

具体实现看大家实现方式.
如果大家看到一个对象进行foreach去迭代,那就只需要去实现这一个方法就行.

很赞哦! (1)

相关文章

文章评论

站点信息

  • 建站时间:2019-10-24
  • 网站程序:Thinkphp6 Layui
  • 文章统计247篇文章
  • 标签管理标签云
  • 统计数据cnzz统计
  • 微信公众号:扫描二维码,关注我们