Просто передавайте имя родителя в функцию с параметром по умолчанию, да вообще, что угодно. И откажитесь от глобалов, вредно это, кошмары начинают по ночам снится, раннее поседение.
function recursiveJSON2ARRAY($obj, $parentname = null)
{
global $marks;
foreach ($obj as $v) {
if (isset($v->children) && is_array($v->children) && count($v->children) > 0) {
$parentname = $v->name;
foreach($v->children as $child) {
if(isset($child->url)){
$marks[$child->date_added] = array('parentname'=>$parentname, 'name'=>$child->name, 'url'=>$child->url);
} else {
recursiveJSON2ARRAY($v->children, $parentname);
}
}
} else {
if (isset($v->url)) {
// если $parentname не передали, то он null
$marks[$v->date_added] = array('parentname'=>$parentname, 'name'=>$v->name, 'url'=>$v->url);
}
}
}
}
if ($b_bar) {
recursiveJSON2ARRAY($b_bar);
}