クラス内のメソッドで、下記関係が成立しているとき、再帰処理するには?
・childには、「中身がある配列」か「空の配列」が格納されているのですが、「空の配列」になるまで処理継続したい

public function a()
  //中略
  foreach ($data as $k => $v) {
    $this->r[] = $k;
    $this->f($v);
  }
}
public function f($v)
{
  $child = $v->child;
  foreach ($child as $k2 => $v2) {
    $this->r[] = $k2;
    $this->f2($v2);
  }
}
public function f2($v2)
{
  $child = $v2->child;
  foreach ($child as $k3 => $v3) {
    $this->r[] = $k3;
    $this->f3($v3);
  }
}
public function f3($v3)
//以下略