Forum Webscript.Ru
Программирование => PHP => Тема начата: Enemy от 18 Июня 2003, 13:49:47
-
function getParameter($uid, $array, $parameterName, $count = NULL)
{
global $workClass;
if (!$count)
$array = $workClass->sortByFieldArray($array, "uid");
$value = $array[$uid][0][$parameterName];
if ($value) {echo \'"\'.$value.\'"\'; return $value;}
getParameter($array[$uid][0]["parent_uid"], $array, $parameterName, true);
}
//ВЫЗОВ ФУНКЦИИ
# get xsl template name
echo "(((". getParameter($array["uid"], $data, "xsl_template"). ")))";
//ВЫВОД----------------------------------------------
// видно что в функции echo \'"\'.$value.\'"\' - работает ("news.xsl"), а вот return не возращает $value. Почему??? Может кто поможет?...
// ВЫВОД НА СТРАНИЦЕ:
"news.xsl"((()))
-
Господа програмеры помогите найти еррор. в моем скрипте. пожалуйста.
# рекурсивная функция, которая возвращает значение елемента массива, если оно есть. Если нет, функция смотрит есть ли такое значение выше - у parent:
function getParameter($uid, $array, $parameterName)
{
$value = $array[$uid][0][$parameterName];
# ЗДЕСЬ почемуто echo $value работает, а вот return - нет
if ($value) {echo \'"\'.$value.\'"\'; return $value;}
getParameter($array[$uid][0]["parent_uid"], $array, $parameterName);
}
// ВЫЗОВ ФУНКЦИИ
# get xsl template name
echo "(((". getParameter(11, $data, "xsl_template"). ")))";
// ВЫВОД НА СТРАНИЦЕ:
"news.xsl"((()))
# Вот мой массив $data:
[OFF]
Array
(
[5] => Array
(
(
[uid] => 5
[parent_uid] => 0
[xsl_template] => news.xsl
)
)
[10] => Array
(
(
[uid] => 10
[parent_uid] => 5
[xsl_template] => news.xsl
)
)
[11] => Array
(
(
[uid] => 11
[parent_uid] => 10
[xsl_template] =>
)
)
)
[/OFF]
-
Потому что у тебя для одиннадцатого элемента не определен xsl_template. Следовательно Value="" - IF не отрабатывает, идет рекурсия на 10 элемент.
Он выводится эхом. идет ретурн обратно из рекурсии, а там нет уже ретурна.. возвращает "НИЧТО" :-)
Доступно объяснил?
Я думаю, то что тебе надо решается так:
function getParameter($uid, $array, $parameterName)
{
$value = $array[$uid][0][$parameterName];
# ЗДЕСЬ почемуто echo $value работает, а вот return - нет
if ($value) {echo \'"\'.$value.\'"\'; return $value;}
return getParameter($array[$uid][0]["parent_uid"], $array, $parameterName);
}
-
Metaller
супер :)