Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / foreach. Указатель элемента массива глобален? / 5 сообщений из 5, страница 1 из 1
05.10.2004, 21:54
    #32724950
oz
oz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
foreach. Указатель элемента массива глобален?
Привет.
Есть конструкция вида
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
function show_tree($parent){
   global $tree_array;
   foreach($tree_array as $key=>$array){
      if($array[parent] != $parent)continue;
      echo $array[name].'<br>';
      show_tree($key);
      }
   }
, которая при дереве вида
1 0
2 1
3 1
4 0
выдает только ветку 1, 2, 3 и не рисует 4. Иначе говоря, указатель элемента массива один для рекурсий всех уровней? Иначе говоря, получается, что при выходе из рекурсии для вызывающей процедуры указатель будет уже не на $key + 1, а там, где остановилась рекурсия более низкого уровня?

ЗЫ: убрал массив из global и передаю его через параметры - всё работает как хотелось.

------------------------------------------------
Who is Fuck the Alise?
...
Рейтинг: 0 / 0
06.10.2004, 21:50
    #32726951
taj
taj
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
foreach. Указатель элемента массива глобален?
Все логично, т.к. в первом случае (когда global) ты фактически передаешь $tree_array по ссылке, а во-втором (когда параметром) - по значению.
...
Рейтинг: 0 / 0
06.10.2004, 22:52
    #32726969
oz
oz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
foreach. Указатель элемента массива глобален?
Просто думал, что всё, что относится к циклам - локально в рамках йункционального блока. Получается, что указатель цикла foreach реализован на уровне массива. Если честно, то я до сих пор счетаю, что это не совсем корректно. Хорошо, что вовремя заметил.
...
Рейтинг: 0 / 0
07.10.2004, 10:26
    #32727365
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
foreach. Указатель элемента массива глобален?
Как реализован foreach (и многие другие вещи) написано в мануале.
...
Рейтинг: 0 / 0
11.10.2004, 17:54
    #32732863
taj
taj
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
foreach. Указатель элемента массива глобален?
ozПросто думал, что всё, что относится к циклам - локально в рамках йункционального блока. Получается, что указатель цикла foreach реализован на уровне массива. Если честно, то я до сих пор счетаю, что это не совсем корректно. Хорошо, что вовремя заметил.

Назначение внутреннего указателя на элемент массива не ограничено использованием конструкции foreach, в то же время назначение конструкции foreach ограничивается использованием в контексте массива, поэтому, повторюсь, все логично.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / foreach. Указатель элемента массива глобален? / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]