Автор Тема: не могу найти баг  (Прочитано 2794 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Enemy

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 204
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.lutsiv.com
не могу найти баг
« : 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"((()))
« Последнее редактирование: 18 Июня 2003, 16:33:23 от Enemy »
Life is Good

Оффлайн Enemy

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 204
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.lutsiv.com
не могу найти баг
« Ответ #1 : 18 Июня 2003, 17:29:03 »
Господа програмеры помогите найти еррор. в моем скрипте. пожалуйста.

# рекурсивная функция, которая возвращает значение елемента массива, если оно есть. Если нет, функция смотрит есть ли такое значение выше - у 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
        (
           
  • => Array

                (
                    [uid] => 5
                    [parent_uid] => 0
                    [xsl_template] => news.xsl
                )

        )

    [10] => Array
        (
           
  • => Array

                (
                    [uid] => 10
                    [parent_uid] => 5
                    [xsl_template] => news.xsl
                )

        )

    [11] => Array
        (
           
  • => Array

                (
                    [uid] => 11
                    [parent_uid] => 10
                    [xsl_template] =>
                )

        )

)
[/OFF]
Life is Good

Оффлайн Metaller

  • Мелкое злобное существо
  • Ветеран
  • *****
  • Сообщений: 538
  • +0/-0
  • 2
    • Просмотр профиля
    • http://michael.pp.ru
не могу найти баг
« Ответ #2 : 18 Июня 2003, 18:01:58 »
Потому что у тебя для одиннадцатого элемента не определен 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); 
}
Everybody\'s Got A Ticket To Ride Except For Me And My Lightning...

Оффлайн Enemy

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 204
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.lutsiv.com
не могу найти баг
« Ответ #3 : 19 Июня 2003, 13:38:57 »
Metaller
супер :)
Life is Good

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28