ホームページ > バックエンド開発 > PHPの問題 > PHPで変数を破棄する2つの方法は何ですか

PHPで変数を破棄する2つの方法は何ですか

青灯夜游
リリース: 2023-03-12 22:02:01
オリジナル
3094 人が閲覧しました

PHP が変数を破棄する 2 つの方法: 1. unset() 関数、構文 "unset($varname)" を使用します; 2. 指定された変数に値を "NULL" として割り当てます、構文 " $varname=null;" 。

PHPで変数を破棄する2つの方法は何ですか

このチュートリアルの動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

PHP 変数または、オブジェクトの破棄は、明示的な破棄と暗黙的な破棄に分けることができます:

1. 明示的な破棄. オブジェクトが参照されていない場合、オブジェクトは破棄されるため、設定を解除するか、NULL を割り当てることができます。 ;

2. 暗黙的な破棄。PHP はスクリプト言語です。コードの最後の行が実行されると、適用されたすべてのメモリが解放される必要があります。

## したがって、次の 2 つの方法があります。変数を破棄します。 :

  • #unset()

  • ##$varname=null
  • 例:

class Human { 
  public $name = '张三'; 
  public $gender = null; 
  public function __destruct() { 
      echo &#39;死了!<br />&#39;; 
  } 
} 
$a = new Human(); 
$b = $c = $d = $a;
unset($a);
$d=null;


echo &#39;<hr />&#39;;
var_dump($a);
echo &#39;<hr />&#39;;
var_dump($b);
echo &#39;<hr />&#39;;
var_dump($c);
echo &#39;<hr />&#39;;
var_dump($d);
ログイン後にコピー
結果は次のようになります:
Notice: Undefined variable: a in /Library/WebServer/Documents/test.php on line 42
NULL
object(Human)#1 (2) { ["name"]=> string(6) "张三" ["gender"]=> NULL }
object(Human)#1 (2) { ["name"]=> string(6) "张三" ["gender"]=> NULL }
NULL 死了!
ログイン後にコピー

まず、PHP では変数名が保存されることを知っておく必要があります。メモリ スタック内で、ヒープ内の特定のメモリのアドレスを指し、変数名を通じてヒープ内のメモリを検索します。したがって、次の結論を導き出すことができます:

<?php
$a = 1;
$b = &$a;
unset($a);
var_dump($a); 
var_dump($b);
ログイン後にコピー

結果は:

Notice: Undefined variable: a in E:\amp\apache\htdocs\index.php on line 5
NULL int(1)
ログイン後にコピー

つまり、unset( ) は変数内のメモリ値を実際に破壊するのではなく、変数とメモリの間の関係を切断し、変数名を削除するだけですが、メモリはそれほど長くは解放されません。まだ参照されているため、PHP では値渡しオブジェクトはデフォルトで参照渡しになっており、Human クラスでは $a が unset() であるが、$b =$c = $d のままであることも説明されています。価値があります。

$varname=null

、変数名はまだ存在しますが、メモリ値は削除されています。では、参照渡しの場合はどうなるでしょうか?例:

<?php        
$a = 1;        
$b = &$a;        
$a=null;        
var_dump($a);        
var_dump($b);
ログイン後にコピー
出力結果は次のとおりです:
NULL NULL
ログイン後にコピー

つまり、

$varname=null

、変数名とメモリ ポインタはまだ存在しますが、メモリ内の値は次のようになります。完全に削除されました。

推奨学習: 「PHP ビデオ チュートリアル

以上がPHPで変数を破棄する2つの方法は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート