Размещено: 2023-12-14 00:49:20
Теги: php
КАК ОЧИСТИТЬ ВСЕ ПЕРЕМЕННЫЕ В PHP
Иногда говно-код очень длинный, нормального разделения на классы и функции не сделано, и тогда в какой-то момент может возникнуть путаница имен переменных, которые допустим возникают в циклах foreach - последний элемент массива, в циклах for, где постоянно используется $i и прочее, и тогда в какой-то момент одни части кода начинают брать переменные из другой части кода, начинается путаница, баги и отвратительная работа, в таком случае все-таки лучше разбивать код на функции и классы.
Но иногда, когда работа идет уже с готовым говно-кодом, то делать это затруднительно и не хочется и тогда в какой-то момент возникает необходимость очистки всех переменных. Допустим если возникла потребность часть этого говно-кода запустить несколько раз циклом, и что бы переменные с первой итерации не попали во вторую. И тогда в какой-то момент проще оставить только нужные переменные, и удалить вообще все остальное, сделать это можно следующим образом:
$a=1234; $b=range(0,6); $c='no_del'; $d='ne_udalyat'; echo $a."\n"; echo $c."\n"; echo $d."\n"; print_r($b); //все переменные PHP находятся в ассоциативном массиве $GLOBALS, проходим циклом по нему foreach(array_keys($GLOBALS) as $variables) { //массив с именами переменных, которые нужно оставить, это только имя переменной без $ if(!in_array($variables, array('c','d'))) { //удаляем переменные, тут идет два $$ - потому, что $variables - это только имя переменной: a, b, c, d unset($$variables); } } echo "\n"."=============================== UNSET_ALL ================================="."\n"; //для примера, откуда может взяться подобный мусор, в цикле foreach переменная $variables остается с нами с последней итеррации echo $variables."\n"; //поэтому что бы очистка была полной необходимо и тут добавить после foreach: unset($variables); echo $a."\n"; echo $c."\n"; echo $d."\n"; print_r($b);
Выведет:
1234 no_del ne_udalyat Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 ) =============================== UNSET_ALL ================================= d no_del ne_udalyat
На эту страницу чаще всего попадают по запросам: очистка переменных, удалить переменные, удаление всех переменных, unset, all, $$ в php