Лично я согласен практически со всеми мыслями авторов всех этих «разоблачающих» статей. Буквально только что открыл страничку с документацией к функции unset docs.php.net/manual/en/function.unset.php Это просто что-то с чем-то! Одна и та же функция ведет себя различными способами в зависимости от того где она вызвана и что ей передано (кто там ругал Perl за его «контексто-зависимость» ?)! На мой личный взгляд, это просто жесть жесткая. Одно радует — раньше я как-то жил и использовал unset, не зная всех этих подводных камней.
If a globalized variable is unset() inside of a function, only the local variable is destroyed. The variable in the calling environment will retain the same value as before unset() was called.
If a variable that is PASSED BY REFERENCE is unset() inside of a function, only the local variable is destroyed. The variable in the calling environment will retain the same value as before unset() was called.