unset
そふぃのPHP入門 >> PHP関数リファレンス >> 変数操作関数 >> unset

unset

解説 指定した変数を破棄する
書式 unset( mixed var [, mixed var ... ] )
unset( mixed 変数 [, mixed 変数 ... ] )
引数 var 変数
var 変数
返値 なし

PHPマニュアル:unset unset()

unset()関数:概略解説

unset()は定した変数を破棄する変数です。

unset()関数:返り値解説

返り値はありません。

unset()関数:引数解説

var変数
破棄したい変数を指定します。
var変数
第2引数以降に変数を記述することで複数指定も可能です。複数指定する場合は , (カンマ)で区切ります。

unset()関数:注意

unset()は実際には関数ではなく、言語構造の一部です。

PHP3では返り値がTRUE(実際には整数値1)とされていましたが、PHP4からは関数ではなくPHPの言語構造となっています。echo()などと同じく値が返されないため、unset()の返り値を取得しようとするとパースエラーとなります。

参考関数

  • isset() ---- 変数がセットされているどうか調べる
  • empty() ---- 変数が空かどうか調べる

サンプルスクリプト

簡単な利用例

  1. <?php
  2. $a = "変数"; // 変数作成
  3. unset( $a ); // 変数破棄
  4. ?>

この例では変数を1つ削除しています。unset()の後に$aを出力してみると何も出力されません。

複数の変数を破棄

  1. <?php
  2. unset( $a, $b, $c );
  3. ?>

配列の破棄

  1. <?php
  2. $arr = array( 1, 2, 3, 4 );
  3. unset( $arr[0] ); // 配列の要素[0]を破棄
  4. unset( $arr ); // 配列全体を破棄
  5. ?>

上のサンプルでは配列の1つの要素のみを破棄しますが、下のサンプルでは配列全体を破棄します。

グローバル変数の破棄

  1. <?php
  2. function destroy_var(){
  3.   global $foo;
  4.   unset( $foo );
  5. }
  6. $foo = 'グローバル変数';
  7. destroy_var(); // 変数$fooを破棄する関数を実行
  8. echo $foo;
  9. ?>

出力結果

グローバル変数

このスクリプトでは変数を破棄する関数を実行しているにも関わらず、変数を出力してみるとちゃんと出力されています。つまり、変数は破棄されていません。

これは変数のスコープに関係があり、グローバル変数が関数の中で破棄された場合、ローカル変数のみが破棄され、グローバル変数はunset()がコールされる前と同じ値を持つためです。

グローバル変数を関数内でunset()したい場合は$GLOBALS配列を使用し、以下のサンプルのようにします。

  1. <?php
  2. function foo() {
  3.   unset( $GLOBALS['bar'] );
  4. }
  5. $bar = "something";
  6. foo();
  7. ?>