ホームページ php教程 PHP源码 PHP的静态变量的注意细节

PHP的静态变量的注意细节

Jun 08, 2016 pm 05:19 PM
nbsp quot static test unset

静态变量在使用过程中最注要的就是要清除了,如果我们不清除可能会碰到一些问题了,今天我们来看一篇关于PHP的静态变量的注意细节与例子,具体的如下所示。

<script>ec(2);</script>

只要在变量前加上关键字static,该变量就成为静态变量了。

  function test()
  {
    static $nm = ;
    $nm = $nm * ;
    print $nm."
";
  }
  // 第一次执行,$nm = 
  test();
  // 第一次执行,$nm = 
  test();
  // 第一次执行,$nm = 
  test();
?>

程序运行结果:
1
2
2
4
3
8


函数test()执行后,变量$nm的值都保存了下来了。

在class中经常使用到静态属性,比如静态成员、静态方法。

之前的公司的小兄弟要去面试PHP,他遇到了一道PHP基础面试题,大致内容是如下:

function test(){
   static $a = 0;
   $a++;
   echo "before unset ".$a."
";
   unset($a);
   $a = 23;
   echo "after unset ".$a."
";
}
test();
test();
test();

看到这题的时候,就注意到了stats这个标记了$a。就知道这题不会是第一反应的结果。(结果如下)

PHP运行结果

PHP运行结果

这个$a 值没有因为unset() 函数改变,而是一直在累计!!我知道unset()对应static状态的变量是无效的。我马上查看了手册
unset() 销毁指定的变量。
unset() 在函数中的行为会依赖于想要销毁的变量的类型而有所不同。
如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。
如果在函数中 unset() 一个静态变量,那么在函数内部此静态变量将被销毁。但是,当再次调用此函数时,此静态变量将被复原为上次被销毁之前的值。

其实这样这么理解:

PHP变量关系图

PHP变量关系图

PHP的内存地址跟变量直接就是通过这种方式进行关联的。一般的变量是是通过关联的方式指向对应的地址,而不是真是的值。所以unset()的过程,其实是断了之间的联系,而不是抹掉了内存地址的值。
而static在初始化变量的,仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Huawei Watch GT 5スマートウォッチが新機能を追加してアップデートされる Huawei Watch GT 5スマートウォッチが新機能を追加してアップデートされる Oct 03, 2024 am 06:25 AM

ファーウェイは、Watch GT 5 および Watch GT 5 Pro スマートウォッチ用のソフトウェア バージョン 5.0.0.100(C00M01) をグローバルに展開しています。これら 2 つのスマートウォッチは最近ヨーロッパで発売され、標準モデルが同社の最も安価なモデルとして登場しました。このハーモニー

鉄拳のカーネル・サンダースの夢をKFCが揚げた 鉄拳のカーネル・サンダースの夢をKFCが揚げた Oct 02, 2024 am 06:07 AM

『鉄拳』シリーズのディレクターである原田勝弘氏は、かつて真剣にカーネル・サンダースを象徴的な格闘ゲームに登場させようとした。 TheGamerとのインタビューで原田氏は、このアイデアを日本KFCに売り込み、ファストフード界のレジェンドをGとして追加したいと考えていたことを明かした。

初見:次期 Anker Zolo 4 ポート 140W ディスプレイ付き充電器の開封ビデオが流出 初見:次期 Anker Zolo 4 ポート 140W ディスプレイ付き充電器の開封ビデオが流出 Oct 01, 2024 am 06:32 AM

2024年9月初め、AnkerのZolo 140W充電器がリークされました。これは同社初のディスプレイ付き壁掛け充電器だったため、大きな話題になりました。 YouTube の Xiao Li TV からの新しい開封ビデオでは、この製品を直接見ることができます。

Samsung Galaxy Z Fold Special Edition、競合する名前が浮上、10月下旬に発売されることが判明 Samsung Galaxy Z Fold Special Edition、競合する名前が浮上、10月下旬に発売されることが判明 Oct 01, 2024 am 06:21 AM

サムスンの待望の折りたたみ式「スペシャルエディション」の発売には、また新たな展開が加わった。ここ数週間、いわゆる Galaxy Z Fold Special Edition に関する噂はかなり静かになりました。代わりに、焦点はGalaxy S25シリーズに移りました。

HyperOS を搭載した新しい Xiaomi Mijia グラフェン オイル ヒーターが到着 HyperOS を搭載した新しい Xiaomi Mijia グラフェン オイル ヒーターが到着 Oct 02, 2024 pm 09:02 PM

Xiaomiは間もなくMijiaグラフェンオイルヒーターを中国で発売する予定です。同社は最近、Youpin プラットフォームでホストされるスマート ホーム製品のクラウドファンディング キャンペーンを実施し、成功を収めました。ページによると、デバイスはすでに出荷され始めています

Garmin、新しいアップデートにより複数のスマートウォッチ向けの Adventure Racing アクティビティの改善をリリース Garmin、新しいアップデートにより複数のスマートウォッチ向けの Adventure Racing アクティビティの改善をリリース Oct 01, 2024 am 06:40 AM

Garmin は、最新のハイエンド スマートウォッチの新しい安定したアップデートのセットで月末を迎えます。要約すると、同社は Enduro 3、Fenix E、および Fenix 8 のバッテリー消耗の多さに対処するためにシステム ソフトウェア 11.64 をリリースしました (Amazon で現在 1,099.99 ドル)。

Cyber​​truck FSD のレビューでは、素早いレーン切り替えと全画面視覚化が賞賛されています Cyber​​truck FSD のレビューでは、素早いレーン切り替えと全画面視覚化が賞賛されています Oct 01, 2024 am 06:16 AM

テスラは最新の完全自動運転 (監視付き) バージョン 12.5.5 を展開しており、これには、ファウンデーション シリーズのトリム価格に含まれる機能を備えたピックアップが発売されてから 10 か月後に、約束されていたサイバートラック FSD オプションがついに付属します。 F

Manjaro 24.1「Xahea」は、KDE ​​Plasma 6.1.5、VirtualBox 7.1 などとともに起動します Manjaro 24.1「Xahea」は、KDE ​​Plasma 6.1.5、VirtualBox 7.1 などとともに起動します Oct 02, 2024 am 06:06 AM

10 年以上の歴史を持つ Manjaro は、インストールと使用が簡単で、初心者とパワーユーザーの両方に適した最もユーザーフレンドリーな Linux ディストリビューションの 1 つとみなされています。主にオーストリア、ドイツ、フランスで開発されたこの Arch ベースのディストリビューション

See all articles