У меня возник вопрос.
Написал скрипт-обработчик для погоды. «Заинклюдил» его на нужную страницу и вывел с него данные. Все работало.
Теперь пытаюсь все это интегрировать в движок. Делаю все аналогично, но, скрипт не работает корректно. Вывел промежуточные данные и выяснилось, что корректное исполнение скрипта прекращается на первой функции.
В чем может быть проблема, никак не пойму. Помогите пожалуйста разобраться.
P.S. Код пока не стал приводить, нужен?
Спустя 29 минут, 18 секунд (10.02.2009 - 15:30) REANIMATOR написал(а):
Цитата |
Код пока не стал приводить, нужен? |
желательно

Спустя 13 минут, 16 секунд (10.02.2009 - 15:43) Юрий Шу написал(а):
PHP |
<? |
Весь верхний кусок я вставляю инклюдом и периодические запускаю cron'ом, но это не суть важно, так как не работает ни в одном, ни в другом случае

Пробую делать print_r($weather) выводит пустой массив.
print_r($arr) же работает корректно.
P.S. Без движка этот код работает.
Спустя 1 час, 3 минуты, 29 секунд (10.02.2009 - 16:46) sergeiss написал(а):
Судя по твоему описанию, у тебя не происходит присвоение значенией вот тут где-то (потому что до этого места данные есть, а после - нету):
PHP |
//формирование массива с нужными параметрами |
Значит, надо копать функцию delTags. Или я что-то не понимаю?
Я предлагаю попробовать следующее, или последовательно, или всё сразу:
1. Не использовать global для массива $arr, а передавать его как параметр. Скорее даже не весь массив, а нужный его элемент, вместо позиции элемента в массиве, т.е. передавай просто ту строку, которую хочешь обработать.
2. Распечатывать промежуточные результаты прямо внутри функции DelTags, до выхода из функции, и сразу же после выхода из нее. Ты уже задавал вопрос насчет этой функции, но, похоже, "до ума" ее не довел.
3. Мне лично не нравится автоматическое назначение индексов массива $weather. Я бы использовал текстовые индексы. Например,
PHP |
$weather['point_timestamp']=delTags('point_timestamp',9); |
Это существенно улучшит читаемость программы и надежность кода, т.к. ты получаешь полный контроль над массивом. К описываемой тобой проблеме это, я думаю, и не имеет отношения, но лучше все-таки сделать так.
Спустя 31 минута, 33 секунды (10.02.2009 - 17:18) Юрий Шу написал(а):
sergeiss, попробую сделать как ты сказал, однако, все же смущает тот факт, что один и тот же код в разных «местах» работает по-разному.
разве это возможно? почему?
разве это возможно? почему?
Спустя 16 часов, 30 минут, 41 секунда (11.02.2009 - 09:49) Юрий Шу написал(а):
Цитата |
Не использовать global для массива $arr, а передавать его как параметр. Скорее даже не весь массив, а нужный его элемент, вместо позиции элемента в массиве, т.е. передавай просто ту строку, которую хочешь обработать. |
Не очень понятно, как тут без global.
Можете привести код для функции?
Спустя 1 час, 51 минута, 27 секунд (11.02.2009 - 11:40) sergeiss написал(а):
ОК, смотри.
Вот у тебя написано
Вот у тебя написано
PHP |
function delTags($tag,$num) { |
Вызов функции:
PHP |
delTags("point_timestamp",9)); |
Вопрос: а зачем нужен глобальный массив, если ты из него используешь только одну строку, и ничего в массиве не изменяешь?
А почему бы не сделать так:
PHP |
function delTags($tag,$str) { |
Вызов функции:
PHP |
delTags("point_timestamp",$arr[9])); |
Global может быть полезен, когда ты данные модифицируешь, или какая-то сложная структура. Тут же короткая строка, которую лучше просто передать в функцию.
Может я и не прав, но язык Си меня ранее приучил к тому, что с глобальными переменными нужно как можно аккуратнее общаться - будет проще работать

Спустя 1 час, 57 минут, 11 секунд (11.02.2009 - 13:37) Юрий Шу написал(а):
sergeiss, я вас понял.
Благодарю за информацию
Благодарю за информацию
