【问题标题】:Php, is there an array to iterator converter?Php,是否有一个数组到迭代器转换器?
【发布时间】:2017-06-21 17:55:25
【问题描述】:

数组http://php.net/manual/en/function.iterator-to-array.php 有迭代器这很好,但有什么可以逆转的吗?

【问题讨论】:

  • 来自您链接的页面$iterator = new ArrayIterator($array)
  • 反转是什么意思?
  • @ChinLeung: o 不将迭代器转换为数组,但将数组转换为迭代器
  • 您能否提供一个通过print_r()var_dump() 输入和预期输出的示例?我 99% 确信 PHP 对此有一些晦涩难懂的功能,或者如果没有,那么通过for()/foreach() 循环将是微不足道的。

标签: php


【解决方案1】:

是的,如果 reversed 意味着只需从给定的数组中创建一个迭代器

$array = array(
  'a' => 1,
  2 => new stdClass,
  3 => array('subArrayStuff'=>'value')
);

$iterator = new ArrayObject($array);

$arrayAgain = iterator_to_array($iterator);

试试看。

http://php.net/manual/en/class.arrayobject.php

另请阅读Difference between ArrayIterator, ArrayObject and Array in PHP

【讨论】:

  • 示例有效,而且问题本身并没有深入到我会解释的程度;-) 问题是:您首先要使用哪种Traversable? ;)
  • 我认为 iterator_to_array 在内部处理 getIterator() 问题。所以没关系:)
  • 为什么不new ArrayIterator($array)
【解决方案2】:

http://php.net/manual/en/class.iterator.php 这是一个使用数组的 MyIterator 示例。您可以更改构造函数并将任何数组传递给那里

类 myIterator 实现迭代器 { 私人$位置= 0; 私人 $array = array(); 公共函数 __construct($data = array()) { $this->array = $data; $this->位置 = 0; } 函数倒带(){ var_dump(__METHOD__); $this->位置 = 0; } 功能电流(){ var_dump(__METHOD__); 返回 $this->array[$this->position]; } 功能键(){ var_dump(__METHOD__); 返回 $this-> 位置; } 功能下一个(){ var_dump(__METHOD__); ++$this->位置; } 函数有效(){ var_dump(__METHOD__); 返回 isset($this->array[$this->position]); } }

【讨论】:

  • 有点厚颜无耻地复制手册页,当带有链接的评论可以达到同样的效果时
  • 我已经进行了更改。否则我会在评论中留下链接。但是,是的,它是基于从手册中复制而来的
猜你喜欢
  • 1970-01-01
  • 2017-11-03
  • 2021-08-26
  • 2019-03-30
  • 2019-06-20
  • 1970-01-01
  • 2020-05-29
  • 2015-12-04
  • 2015-09-09
相关资源
最近更新 更多