php - iterator_to_array

标签 php oop iterator spl

DatePeriod是一个用于处理重复日期的 PHP 类。它的方法数量非常有限。所以当我想用重复日期做基本的数组函数时,我必须将它复制到一个数组中 iterator_to_array .奇怪的是,复制它似乎会破坏它。有什么想法吗?

$p=new DatePeriod(date_create('2008-01-01'),
                  DateInterval::createFromDateString( "+2 days" ),
                  date_create('2008-12-31')); 

echo count(iterator_to_array($p)); //183 

$a=iterator_to_array($p); 
echo count($a); //0 

最佳答案

这是我要做的。我将扩展 DatePeriod 并实现一个 toArray 方法:

class MyDatePeriod extends DatePeriod
{
    public $dates;

    public function toArray()
    {
        if ($this->dates === null) {
            $this->dates = iterator_to_array($this);
        }

        return $this->dates;
    }
}

$p = new MyDatePeriod(date_create('2008-01-01'),
                      DateInterval::createFromDateString( "+2 days" ),
                      date_create('2008-12-31'));

echo count($p->toArray()) . "\n"; // 183

echo count($p->toArray()) . "\n"; // 183

关于php - iterator_to_array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1427097/

相关文章:

javascript - 记住下拉列表中最后选择的选项

未执行 PHP PDO 查询

java - 如何实现可配置的单例?

c++ - 错误 : 'e' is not a class, 命名空间或枚举

c++ - std::find的替代方法,它返回所有找到的值,而不是仅存在重复项的vector的第一个

php - 如何使用 jQuery 获取上传输入的 "value"

python OOP 类方法保留变量。奇怪的范围界定事情

c++ - 正确分类元素

python - 使用 for 循环读取文件时跳过一行

PHP MYSQL 寻找一种对具有多个详细信息和总计的行进行分组的方法