2013-05-23 6 views
0

В руководстве PHP говорится: «unset() уничтожает указанные переменные». Он имеет следующий пример:Какая польза от использования «unset»?

<?php 
function destroy_foo() 
{ 
    global $foo; 
    unset($foo); 
} 

$foo = 'bar'; 
destroy_foo(); 
echo $foo; 
?> 

выше выходной код будет:

bar 

Так что же "сбросьте сделано? Не понимаю. Пожалуйста, объясни.

+3

global делает локальную переменную ссылкой на переменную в глобальной области. Когда вы отключаетесь внутри функции, вы не устанавливаете эту ссылку, а не переменную «выше». 'unset ($ GLOBALS ['foo'])' будет убивать значение. –

+0

Это должно быть добавлено в качестве ответа и принято –

+0

@MarcB. Пожалуйста, добавьте свой ответ как Q, поэтому я могу принять. Благодарю. – mattnewbie

ответ

4

глобальной делает локальную переменную ссылку на переменную в глобальном масштабе. Когда вы отключаетесь внутри функции, вы не устанавливаете эту ссылку, а не переменную «выше».

например.

function foo() { 
    global $bar; 
    unset($bar); 
} 

является по большей части делает то же самое, как

function foo() { 
    $bar = &$GLOBALS['bar']; 
    unset($bar); // kill the local reference, not the global variable. 
} 

это просто немного легче на глазах.

0

Помимо комментария Марка, unset часто используется различными способами. Только один пример -

Unset определенный элемент в массиве:

$arr = array("a","b","c"); 
unset($arr['b']); 
print_r($arr); 

//gives us 
//array("a","c"); 
+0

Спасибо. Теперь имеет смысл. – mattnewbie

Смежные вопросы