Первое предположение: предположим, мы определили переменную (ее имя - $ tmp) в функции (имя функции - ExpMenu) для временного вычисления, а в конце функции мы возвращаем эту переменную.PHP - переменная область в рекурсивно функции
Второе предположение. Предположим, мы вызываем эту функцию рекурсивно для создания базы меню навигации на многомерном массиве.
Мой вопрос касается области видимости этой переменной ($ tmp). В каждом вызове функция будет перезаписана? Другими словами, по каждому вызову функции мы теряем предыдущее значение?
Для более подробной информации, пожалуйста, ознакомьтесь ниже кода:
/// --- { Declaration Block
$content = array(
array(
'level'=>'1',
'order'=>'1',
'text'=>'New Solution WorkFlow',
'is_parent'=>'yes',
'child'=> array(
array(
'level'=>'2',
'order'=>'1',
'text'=>'Define New Solution',
'is_parent'=>'no',
'url'=>'#'
),
array(
'level'=>'2',
'order'=>'2',
'text'=>'View Solutions',
'is_parent'=>'no',
'url'=>'#'
),
array(
'level'=>'2',
'order'=>'3',
'text'=>'View Solutions',
'is_parent'=>'no',
'url'=>'#'
)
)
),
array(
'level'=>'1',
'order'=>'2',
'text'=>'Solution Modify WorkFlow',
'is_parent'=>'yes',
'child'=> array(
array(
'level'=>'2',
'order'=>'1',
'text'=>'Request For Solution Modify',
'is_parent'=>'no',
'url'=>'#'
)
)
),
array(
'level'=>'1',
'order'=>'3',
'text'=>'Solution Close WorkFlow',
'is_parent'=>'yes',
'child'=> array(
array(
'level'=>'2',
'order'=>'1',
'text'=>'Declare For Solution Close',
'is_parent'=>'no',
'url'=>'#'
)
)
)
);
function ExpMenu($item_array) {
$tmp='';
foreach ($item_array as $item) {
if ($item['is_parent']=='yes') {
$tmp = '<li class="hasChild">' . $item["text"] . '<ul>';
$tmp .= ExpMenu($item['child']);
$tmp .= '</ul></li>';
} else {
$tmp = '<li>';
$tmp .= '<a href="' . $item['url'] . '">'. $item['text'] . '</a>' ;
$tmp .= '</li>';
}
}
return $tmp;
}
/// --- }
$menu='<div><ul>';
$menu .= ExpMenu($content);
$menu.='</ul></div>';
echo $m . '<br />';
Спасибо [@gre_gor] (http://stackoverflow.com/users/794749/gre-gor). Вы точно обнаружили мою фактическую проблему. Но мой вопрос касается области переменных в рекурсивных функциях. Самое интересное, что мы с тобой нашли тот же ответ. –