Поиск

Привет, Гость

Войти
Идентификация
Я забыл свой пароль
Регистрация

Бесплатные системы управления имеют меньше ошибок, так как чаще используются и протестированы многими людьми.

СтатьиСтатьиРазработка сайтов → Почему не работает global внутри функции

Итак, давайте приоткроем завесу тайны, почему не срабатывает подобный код:
Код:
<?php

$a=0;

function answer(){

global $a;

$a++;

}

answer();

echo 'a='.$a;

?>
И странный ответ:
Цитата:
a=0
То есть переменная не передалась в функцию, и значение её не вернулось назад. Такого не может быть, скажете. И будете неправы — хоть ни в каких мануалах об этом нет ни слова.

Убив однажды не один день на поиск ошибки (мне в страшном сне не снилось, что переменная не передалась в функцию), я начал логировать все подряд — все переменные, выводы функций, пошагово.

И обнаружил такое вот странное поведение — global не работает.

Я даже вынес функцию в отдельный файл — она сработала, и тут до меня дошло.



Так вот, это МОЖЕТ произойти и с Вами.

Если будете включать функцию в функцию, то объявление global во встроенной функции не сработает.

Именно это и было в моем случае — функция была в файле, который был включен в другую функцию

pardon

Решение простое — ещё до присвоения значения переменной, надо объявить её как global и все сработает.

То есть код, который выше, перепишем так:
Код:
<?php

global $a;

$a=0;

function answer(){

global $a;

$a++;

}

answer();

echo 'a='.$a;

?>
А что случилось с Вами? Ведь если нашли подобную статью в поисковике, значит отчего-то такую информацию искали.yes
Дата 2013-04-21 22:43:43

Комментировать

Вы не залогинены!

Устал читать? Напиши! Или позвони +375 29 5344286. На связи по будним дням с 800 до 1700.