powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / foreach. Указатель элемента массива глобален?
5 сообщений из 5, страница 1 из 1
foreach. Указатель элемента массива глобален?
    #32724950
Фотография oz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.
Есть конструкция вида
Код: 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
foreach. Указатель элемента массива глобален?
    #32726951
taj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все логично, т.к. в первом случае (когда global) ты фактически передаешь $tree_array по ссылке, а во-втором (когда параметром) - по значению.
...
Рейтинг: 0 / 0
foreach. Указатель элемента массива глобален?
    #32726969
Фотография oz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто думал, что всё, что относится к циклам - локально в рамках йункционального блока. Получается, что указатель цикла foreach реализован на уровне массива. Если честно, то я до сих пор счетаю, что это не совсем корректно. Хорошо, что вовремя заметил.
...
Рейтинг: 0 / 0
foreach. Указатель элемента массива глобален?
    #32727365
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Как реализован foreach (и многие другие вещи) написано в мануале.
...
Рейтинг: 0 / 0
foreach. Указатель элемента массива глобален?
    #32732863
taj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ozПросто думал, что всё, что относится к циклам - локально в рамках йункционального блока. Получается, что указатель цикла foreach реализован на уровне массива. Если честно, то я до сих пор счетаю, что это не совсем корректно. Хорошо, что вовремя заметил.

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


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