![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Burka |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.5.2007 Репутация: нет Всего: 2 |
Пишу инклуд файл с функцией, которая парсит xml файл с помощью стандартных функций.
В моей функции описано три функции которые выполняются переодически при обходе файла xml. Проблема в том что переменную $nicks_arr в функции characterData не видно, хотя переменные $i и $tmp_state_name видно.
Эта строчка выводит все правильно. То есть все данные присутствуют.
-------------------- Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей. |
||||
|
|||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: 11 Всего: 13 |
$nicks_arr объявляется в функции, поэтому область видимости массива ограничена функцией GetTopStats()
|
|||
|
||||
| Burka |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.5.2007 Репутация: нет Всего: 2 |
Спасибо, не думал что Global Везде где только можно писать нужно
-------------------- Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей. |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
У указателями редко пользуюсь , поэтому могу вам сказать не правильно
но стоит проверить вариант с указателем
|
|||
|
||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Этого делать не надо, global — это плохо. Его не должно быть вовсе. Добавлено @ 11:18 enoff, shame on you! Это сообщение отредактировал(а) gta4kv - 29.8.2010, 11:18 |
|||
|
||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: 11 Всего: 13 |
||||
|
||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Этого делать не надо © gta4kv; |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
меня эти "не надо" всегда расстраивали своей не информативностью. а как же тогда иначе? надо предлагать вариант. что касается самого "не надо", пока человеку не объяснишь (желательно кратко и ёмко), он не воспримет. почему не надо? поводу этого не надо: процедура (она же функция, она же замыкание функции, она же подпрограмма) - это изолированный кусок программы, суть применения которого - в локализации часто повторяющегося кода в одном месте. функция ничего не должна знать о внешнем мире, так как заранее неизвестно, где она будет применяться, какие глобальные переменные будут существовать, а какие нет. введение global - привязывает функцию к конкретному участку программы, а значит теряется смысл создания функции. в таком случае её лучше встроить внутрь самого кода, тогда она не потребует дополнительных расходов ресурсов на вызов функция должна принимать данные и отдавать данные, оперируя исключительно собственным внутренним пространством имён. тогда её можно будет без всякой задней мысли использовать в любом другом коде как я понимаю, здесь добавления простого return $array; вполне хватит |
|||
|
||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
bars80080, я не теоретик.
Добавлено через 10 секунд умные длинные посты писать не умею |
|||
|
||||
| Burka |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.5.2007 Репутация: нет Всего: 2 |
Это все хорошо и я все понимаю, но в данном случае без глобальной переменной не обойтись, так как количество аргументов у функций четко определено и данные из одной функции не перенести в другую другим способом. И вообще функции разные бывают и не обязательно она должна быть совершено самостоятельной. -------------------- Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей. |
|||
|
||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Без глобальной переменной можно обойтись абсолютно в любой ф-ции. Не вижу помех, для того, что бы передать $nicks_arr как параметр ф-ции.
Это сообщение отредактировал(а) gta4kv - 30.8.2010, 12:18 |
|||
|
||||
| Burka |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.5.2007 Репутация: нет Всего: 2 |
Если захочешь еще сказать что глобальная переменная не нужна, напиши работающий код с использованием xml_set_element_handler в которую передается функция с четырьмя параметрами.
Это сообщение отредактировал(а) Burka - 1.9.2010, 09:22 -------------------- Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей. |
||||
|
|||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
В чем проблемы, не пойму?
Добавлено @ 12:02 Бред вообще несешь. Никакой функции не нужен global, что бы работать. А своё неумение не надо скидывать на «Если захочешь еще сказать что глобальная переменная не нужна, напиши работающий код». Это сообщение отредактировал(а) gta4kv - 1.9.2010, 12:02 |
|||
|
||||
| Burka |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.5.2007 Репутация: нет Всего: 2 |
Но вразумительного ответа как обойтись в данном примере без глобал я так и не получил. -------------------- Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей. |
|||
|
||||
| skyboy |
|
||||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
Burka, можно использовать анонимные функции(начиная с версии 5.3.0) или create_function, чтоб получилось что-то вроде:
можно вместо функции передавать метод.
Добавлено через 5 минут и 34 секунды причем, лично я за вариант с объектом и методом. потому что гибче и понятнее. |
||||
|
|||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |