[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос по массиву
vitaver
Ребят подскажите правильно думаю, мне надо создать дерево по средством массива. Код такой:
PHP
//Построение данных в дереве

function generateTree()

{

var aux1, aux2, aux3, aux4

  foldersTree 
= gFld("Начало")

   aux1 = insFld(foldersTree, gFld("Локальные документы"))

    insDoc(aux1, gLnk(0, "Кладовая", "/repository/index.html"))

    insDoc(aux1, gLnk(0, "Детская", "/nursery/index.html"))

  aux1 = insFld(foldersTree, gFld("Избранное в Web"))

    aux2 = insFld(aux1, gFld("Узлы друзей"))

      insDoc(aux2,gLnk(1, "Андрей Аликберов", "www.citmgu.ru/~andreya/"))

      insDoc(aux2,gLnk(1, "Андрей Юрченко", "www.ocs.ru/~andin/"))

      insDoc(aux2,gLnk(1, "Сергей Новиков", "novikov.com/"))

Ну и так далее........

//Вспомогательная функция, чтобы построить узел

function gFld(name)

{

var arrayAux

   arrayAux 
= new Array

  arrayAux
[0] = 0

  arrayAux
[1] = 0

  arrayAux
[2] = 0

  arrayAux
[3] = name

   return arrayAux

}


function insFld(parent, child)

{

  parent[parent.length] = child

  return child

}

function insDoc(parent, child)

{

  parent[2] = parent[2] + 1

  parent
[parent.length] = child

  return child

}

//Вот. Я вот так понимаю построение дерева:

 foldersTree[0] = 0
 foldersTree
[1] = 0
 foldersTree
[2] = 0
 foldersTree
[3] = Начало
 foldersTree
[4] = aux1[0] = 0
                          aux1
[1] = 0
                          aux1
[2] = 0
                          aux1
[3] = Локальные документы
 foldersTree
[5] = aux1[0] = 0
                          aux1
[1] = 0
                          aux1
[2] = 0
                           aux1
[3] =

<


Причем aux1 дитё foldersTree, правельно?
Теперь после функции insDoc измениться только aux1[2] и добавит в массив aux1 4й элемент? Или массив foldersTree при этом тоже измениться? И еще, массивы aux2 и т.д. будут уже складываться в aux1?



Спустя 9 часов, 13 минут, 49 секунд (15.03.2009 - 20:56) kirik написал(а):
Тут доки к тому коду, что ты выложил + демо + скачать.

Спустя 5 часов, 53 минуты, 3 секунды (16.03.2009 - 02:49) vitaver написал(а):
kirik
Спасибо!!!!!!!!!!!! smile.gif

Спустя 1 день, 18 минут, 6 секунд (17.03.2009 - 03:07) vitaver написал(а):
kirik
А можешь мне обьяснить как данные в массив записываються? Сылка интересная, а вот понимание массива в голове не укладыветься.
Вот в массиве foldersTree сколько элементов? я нащитал шесть(в данном примере), дальше добавление в массивы aux. Подскажи.

Спустя 46 минут, 46 секунд (17.03.2009 - 03:54) kirik написал(а):
Цитата (vitaver @ 16.03.2009 - 19:07)
Вот в массиве foldersTree сколько элементов?

Скока добавишь, стока и будет smile.gif узнать сколько элементов в массиве можно так - alert(foldersTree.length);

Цитата (vitaver @ 16.03.2009 - 19:07)
а вот понимание массива в голове не укладыветься

Ээм.. Массив эт кусок пространства в памяти компа, в котором содержатся некоторые значения, и которые имеют общий "адрес" в памяти.
Типа есть набор фломастеров в коробке: синий, красный, черный, зеленый, желтый. Коробка выступает в роли контейнера, тоесть на вопрос "Где фломастеры?" будет дан ответ - "В коробке.".
Чтобы нам достать нужный фломастер нам нужно знать его цвет, или номер по счету. Если мы достаем фломастер по цвету - это будет ассоциативный массив:
PHP
array(
    'синий' => 'фломастер, который пишет синим',
    'черный' => 'фломастер, который пишет черным',
    'красный' => 'фломастер, который пишет красным',
    'зеленый' => 'фломастер, который пишет зеленым',
    'желтый' => 'фломастер, который пишет желтым'
)


А можно достать третий фломастер:
PHP
array(
    0 => 'фломастер, который пишет синим',
    1 => 'фломастер, который пишет черным',
    2 => 'фломастер, который пишет красным',
    3 => 'фломастер, который пишет зеленым',
    4 => 'фломастер, который пишет желтым'
)

и получим зеленый фломик.

Еще массивы бывают многомерные, тогда логичен будет такой пример: гараж, в гараже машина, инструменты, краски, ящик с мелочью. А в этом ящике: гвозди, шурупы, чей-то палец, итд.

Спустя 5 часов, 36 минут, 9 секунд (17.03.2009 - 09:30) twin написал(а):
+100
Ни разу не слышал такого точного и доходчивого объяснения про массивы.
Можно я буду использовать? smile.gif

Спустя 40 минут, 18 секунд (17.03.2009 - 10:11) sergeiss написал(а):
Цитата (twin @ 17.03.2009 - 09:30)
+100
Ни разу не слышал такого точного и доходчивого объяснения про массивы.
Можно я буду использовать? smile.gif

Я думаю, что если ты будешь ставить рядом с объяснением "© kirik", то он не будет возражать wink.gif

Спустя 12 часов, 19 минут, 28 секунд (17.03.2009 - 22:30) kirik написал(а):
Цитата (twin @ 17.03.2009 - 01:30)
Можно я буду использовать? smile.gif

Я только ЗА! smile.gif

Спустя 10 часов, 4 минуты, 41 секунда (18.03.2009 - 08:35) vitaver написал(а):
Не, парни это конечно же весело, но вопрос у меня немного другой. Я спрашиваю: вот эта строчка :
SQL
aux2 = insFld(aux1, gFld("Узлы друзей"))


добовляет в массив-родитель foldersTree элемент или добавляет элемент в массив-детё aux1 не трогая при этом массив-родитель? В foldersTree[2] заноситься запись о количестве детей. Если ребенок aux1 заимел детей измениться ли значение foldersTree[2]?
Для того чтобы понимать как это все работает!!!!! Я понимаю что здесь речь идет о многоуровневом массиве, при именно такой записи в массив, как использует этот скрипт, мне важно это понять!

Спустя 3 месяца, 6 дней, 1 час, 39 минут, 9 секунд (24.06.2009 - 09:14) glock18 написал(а):
Да, очень доходчиво. Даже ребенок поймет, думаю.

Единственное, что могу сказать, что это не совсем точно. Но точности эти в деталях, которые не меняют сути в данном случае, но сильно снизят доходчивость.

В общем, хорошее объяснение smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.