PHPunset()の使い方の詳細

5501 ワード

unset()指定した変数を破棄します.PHP 3ではunset()はTRUE(実際には整数値1)に戻りますが、PHP 4ではunset()は真の関数ではありません.現在は文です.これにより戻り値がなくなり、unset()の戻り値を取得しようとすると解析エラーが発生します.
例1.unset()の例//
unset ($foo);

//
unset ($bar['quux']);

//
unset ($foo1$foo2$foo3);
?>

unset()の関数での動作は、破棄する変数のタイプによって異なります.
関数内のunset()がグローバル変数である場合、ローカル変数は破棄され、呼び出し環境内の変数はunset()を呼び出す前と同じ値を維持します.function destroy_foo() {
    global 
$foo;
    unset(
$foo);
}

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

上の例が出力されます.
bar

関数内のunset()が参照によって渡される変数である場合、ローカル変数は破棄され、呼び出し環境内の変数はunset()を呼び出す前と同じ値を維持します.function foo(&$bar) {
    unset(
$bar);
    
$bar "blah";
}

$bar 'something';
echo 
"$bar
";

foo($bar);
echo 
"$bar
";
?>

上の例が出力されます.
something
something

関数内のunset()の静的変数の場合、unset()はこの変数とそのすべての参照を破棄します.//私はこの言葉の意味がよく理解できず、結果的に静的変数の値は破棄されなかった.function foo() {
    static 
$a;
    
$a++;
    echo 
"$a
";
    unset(
$a);
}

foo();
foo();
foo();
?>

上の例が出力されます.
1
2
3

関数でグローバル変数をunset()する場合は、$GLOBALS配列を使用して次のことを行います.function foo() {
    unset(
$GLOBALS['bar']);
}

$bar "something";
foo();
?>

注意:これは関数ではなく言語構造なので、変数関数で呼び出すことはできません.