递归地查找数组中的所有DateTime对象并对其进行格式化



我想找到所有作为Datetime类实例的对象,然后在每个对象中使用format()方法。

我试过这个,但递归不起作用。有人知道为什么吗?我该怎么做?

<?php
namespace MyNamespace;
class MyClass {
    public function convertDate(&$item)
    {
        foreach ($item as $k => $v) {
            if (is_array($v)) {
                $this->convertDate($v);
            } elseif ($v instanceof Datetime) {
                $item[$k] = $v->format('d/m/Y');
            }
        }
    }
}

解决方案

我在数组键中调用convertDate()方法,但我需要传递参数array[key],所以我将$this->convertDate($k)更改为$this->convertDate($item[$k])

<?php
namespace MyNamespace;
class MyClass {
    public function convertDate(&$item)
    {
        foreach ($item as $k => $v) {
            if (is_array($v)) {
                $this->convertDate($item[$k]); // the problem was here, now its working
            } elseif ($v instanceof Datetime) {
                $item[$k] = $v->format('d/m/Y');
            }
        }
    }
}

相关内容

  • 没有找到相关文章

最新更新