我想找到所有作为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');
}
}
}
}