РазделыСтатьиРазработка сайтов → Почему не работает 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
21.04.2013 21:43 Автор/источник: Den1xxx

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

Вы не залогинены! Регистрация

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