Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Зачищаем переменные внутри контейнера


Автор: InfMag 19.12.2008, 12:37
Доброго времени суток! Извиняюсь конечно что лезу в основные принципы работы PHP, но только сейчас появилась такая острая необходимость.

В общем задача такого плана, я задаю переменные обыкновенных имен $file, $page и т.п. имею подключаемый файл в котором все пишу, которые инклудится, исходный файл, который инклудит трогать не могу, поэтому нужно работать именно внутри инклудируемого файла, вот мне нужно во избежание проблем типа unset-ить эти переменные которые я тама задам чтобы после инклуда они не прошли ниже по коду, каждый унсет прописывать я само собой не собираюсь. Вот на сколько я знаю если внутри цикла объявлять переменные - дальше цикла они не пойдут, так ведь?:

Код

for ($i=0; $i<1; $i++)
{

$page = "http://yandex.ru";
$file = "cash.dat";

}


Есть ли специально для этого предназначенные контейнеры или лучше не париться и брать цикл?

Автор: MoLeX 19.12.2008, 12:42
InfMag, а ты выведи их после цикла вот и увидишь...

Добавлено через 2 минуты и 54 секунды
так и вопрос поставь по русски пожалуйста

Цитата(InfMag @  19.12.2008,  12:37 Найти цитируемый пост)
В общем задача такого плана, я задаю переменные обыкновенных имен $file, $page и т.п. имею подключаемый файл в котором все пишу, которые инклудится, исходный файл, который инклудит трогать не могу, поэтому нужно работать именно внутри инклудируемого файла, вот мне нужно во избежание проблем типа unset-ить эти переменные которые я тама задам чтобы после инклуда они не прошли ниже по коду, каждый унсет прописывать я само собой не собираюсь.

я понимаю что есть два файла index.php и include.php в котором точно такие же переменные как в index.php и тебя интересует 
можно ли их использовать дальше?!

Добавлено через 3 минуты и 7 секунд
или что?! 

Автор: pizzz 19.12.2008, 12:46
Пойдут.  Непойдут только внутри функции.

Самый простой способ который приходит на ум первым:

Обьявляем всего одну переменную, массив.

Например так

Код

$arr['page'] = "http://yandex.ru";
$arr['file'] = "cash.dat";


А в конце файла просто 

Код

unset($arr);


понятно что $arr надо назвать как нить поинтересней  smile 

Автор: InfMag 19.12.2008, 12:48
MoLeX, нет, мне нужно чтобы после цикла просто небыло этих переменных, до этого их нет. Просто например после инклуда может быть такая тема например if ( file_exists("stop.dat") ) $file=true; а потом еще ниже if (isset($file)) echo 'file!!!';
Дык вот, если после цикла остается переменная $file, то последние условие получается ошибочным. Думаю суть понятна. Есть ли для этого контейнеры или просто лучше брать для этого цикл? 

Автор: pizzz 19.12.2008, 12:51
Есть ли для этого контейнеры или просто лучше брать для этого цикл? 

Да контейнер называеться функция.

Код

function NameFunc(){
// код
}
NameFunc();

Автор: InfMag 19.12.2008, 12:52
Хмм.. Я думал что дальше цикла переменные не идут(( получил 1
Код

for ($i=0; $i<1; $i++)
{
    $page123 = "test";
    echo $page123;
}

if (isset($page123)) echo 1; else echo 0;


Добавлено через 29 секунд
pizzz, спс))

Добавлено через 2 минуты и 54 секунды
да! и еще круто что внутрь функцию просто так не попадают другие переменные! идеальное решение!

Автор: pizzz 19.12.2008, 13:00
Рад был помочь   smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)