claro que se puede, para ello debes ingeniar usando recursividad...
Código PHP:
function foo($bar, $lvl = 0)
{
$tab = str_repeat('-', $lvl);
if (/* ... */)
{
$out = foo($candy, $lvl + 1);
}
echo $tab . $out;
}
de modo que, cada que se empiece un nuevo ciclo se incrementa un parámetro de la función que permite la profundidad (
que bien puede ser una variable estática) y así, cumple su cometido....
espero ilustre de algo, suerte!