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