unset
| 解説 | 指定した変数を破棄する |
|---|---|
| 書式 | void unset( mixed var [, mixed var ... ] ) |
void unset( mixed 変数 [, mixed 変数 ... ] ) |
|
| 引数 |
var
変数
|
var
変数
|
|
| 返値 | なし |
unset()は、定した変数を破棄する変数です。
var
変数
var
変数
unset()は実際には関数ではなく、言語構造の一部です。
※PHP3では返り値がTRUE(実際には整数値1)とされていましたが、PHP4からは関数ではなくPHPの言語構造となっています。echo()などと同じく値が返されないため、unset()の返り値を取得しようとするとパースエラーとなります。
サンプルスクリプト
簡単な利用例
<?php
$a = "変数"; // 変数作成
unset( $a ); // 変数破棄
?>
この例では変数を1つ削除しています。unset()の後に$aを出力してみると何も出力されません。
複数の変数を破棄
<?php
unset( $a, $b, $c );
?>
配列の破棄
<?php
$arr = array( 1, 2, 3, 4 );
unset( $arr[0] ); // 配列の要素[0]を破棄
unset( $arr ); // 配列全体を破棄
?>
出力結果
上のサンプルでは配列の1つの要素のみを破棄しますが、下のサンプルでは配列全体を破棄します。
グローバル変数の破棄
<?php
function destroy_var(){
global $foo;
unset( $foo );
}
$foo = 'グローバル変数';
destroy_var(); // 変数$fooを破棄する関数を実行
echo $foo;
?>
出力結果
グローバル変数
このスクリプトでは変数を破棄する関数を実行しているにも関わらず、変数を出力してみるとちゃんと出力されています。つまり、変数は破棄されていません。
これは変数のスコープに関係があり、グローバル変数が関数の中で破棄された場合、ローカル変数のみが破棄され、グローバル変数はunset()がコールされる前と同じ値を持つためです。
グローバル変数を関数内でunset()したい場合は$GLOBALS配列を使用し、以下のサンプルのようにします。
<?php
function foo() {
unset( $GLOBALS['bar'] );
}
$bar = "something";
foo();
?>


