我想找到所有作为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');
}
}
}
}
答案 0 :(得分:2)
我在数组键中调用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');
}
}
}
}