2016-03-10 3 views
2

Я знаю, что лучше использовать передачу по ссылке вместо этого, но мне интересно, почему этот код (код 1) работает нормально, а другой (код 2) не будет?

Код 1:

<?php 

$var = 5; 

function unset_var() { 
    unset($GLOBALS['var']); 
} 

unset_var(); 
echo $var; //Notice: Undefined variable: var 
?> 

Код 2:

<?php 

$var = 5; 

function unset_var() { 
    global $var; 
    unset($var); // trying to unset $var 
} 

unset_var(); 
echo $var; // 5 
?> 
+2

Второй пример просто severes локального имени и ссылки от глобального его называют. – mario

ответ

2

Ваш второй код имеет функцию, которая создает новую переменную и вы снятия с охраны, что один, а не один за пределами функции. Ваш первый код управляет только массивом $ GLOBALS.

Кроме того, вы должны избегать даже думать о глобальном переменных в первую очередь ....

+0

Я думал о Globals ':-(' Я только что проиграл Игру. – Martin