PHP中語言中有些函數對于初學者來說在字面上是很難理解的,需要在實際編碼中總結經驗 " /> 国产高清视频在线观看97,国产成人在线播放,99久久伊人一区二区yy5099

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

php unset全局變量運用問題的深入解析

php unset全局變量在實際使用中只能銷毀局部變量,并不能實現全局變量的目的。下面我們就來具體解決這一問題。希望對大家有所幫助。

php中語言中有些函數對于初學者來說在字面上是很難理解的,需要在實際編碼中總結經驗,來掌握這些知識。我們今天要為大家介紹的是php unset全局變量在使用中遇到的一些問題。

php 中有個釋放變量的語句叫做unset(從php4開始unset已經不再是一個函數了,而是一個語句),前幾天用unset的時候出了點問題,于是把 unset問題總結如下。如果您仔細閱讀過php的手冊,那么就沒必要再看這篇文章了,這篇文章是寫給看手冊不用心的同學的。

首先要強調的一點是php unset全局變量在php中已經不再是一個函數了,既然不是函數,那么就沒有了返回值,所以用的時候不能夠用unset的返回值來做判斷。

其次,在函數中,php unset全局變量只能銷毀局部變量,并不能銷毀全局變量,來看下手冊的一個例子
復制代碼 代碼如下:
 < ?php
 function destroy_foo() {
 global $foo;
 unset($foo);
 }
 $foo = ‘bar';
 destroy_foo();
 echo $foo;
 ?>

返回的結果為
bar
為什么會這樣呢?原因就是php unset全局變量在函數中只能銷毀局部變量。如果在程序中需要用到銷毀全局變量的應該如何做呢?也很簡單,用$GLOBALS數組來實現。看下面的例子:
復制代碼 代碼如下:
 < ?php
 function foo() {
 unset($GLOBALS['bar']);
 }
 $bar = “something”;
 foo();
 var_dump($bar);
 ?>

php unset()函數被我們用來銷毀變量,但是往往在實際操作時不能使內存中的數據進行釋放。我們在文章中講為大家具體講解有關問題的解決辦法。

我們在學習php語言的時候,通常都會各個函數的用法比較模糊,很那去一一的掌握。但是我們又必須要掌握這些函數。下面我們就為大家詳細介紹有關php unset()函數的相關使用方法。

php unset()函數是用來銷毀變量的,但很多時候,這個函數只把變量給銷毀了,內存中存放的該變量的值仍然沒有銷毀,也就是沒能達到我們想要的釋放內存的效果。這里我建議大家用 $變量=null 的方法來釋放其內存。原因看了下面的就知道了。

以下是關于php unset()函數的幾點要點:(以下均在windows環境下測試,php 2.5.9)
該函數只有在變量值所占空間超過256字節長的時候才會釋放內存
只有當指向該值的所有變量(比如有引用變量指向該值)都被銷毀后,地址才會被釋放(也要執行1的判斷)
下面給出例子代碼論證:
復制代碼 代碼如下:
 < ?php
 $test=str_repeat("1",256); //重復一個字符串,返回值為重復后組成的字符串
 $s = memory_get_usage(); 
 //該函數用來查看當前所用內存
 unset($test);
 $e = memory_get_usage();
 echo ' 釋放內存: '.($s-$e); 
 //輸出為272,但如果上面test變量改為$test=str_repeat("1",255),輸出則為0 ,變量值不足256不會釋放內存的
 ?>

至于為什么是272而不是256,就不是很清楚了,不知道內部是怎么處理的。
復制代碼 代碼如下:
 < ?php
 $test = str_repeat("1",256);
 $p = &$test;
 unset($test);
 echo $p; 
 //輸出為256個1。如果上面改為unset($p),更不行了,echo $test 直接顯示為256個1
 ?>

也就是說內存中賦給$a的值仍然存在。可見unset()并沒達到釋放內存的效果。
但如果在上述代碼中加入$test=null,或者再加一個unset($p),就能達到釋放內存效果了,php unset()函數測試代碼如下:
變量賦值為null方法:
復制代碼 代碼如下:
 < ?php
 $test = str_repeat("1",256);
 $p = &$test;
 $s = memory_get_usage(); 
 $test = null;
 unset($test); //試一下將該句與$test=null 調換先后順序,則結果將不相同
 $e = memory_get_usage();
 echo ' 釋放內存: '.($s-$e);
 //輸出為272
 var_dump($p); //輸出為NULL
 ?>

將指向該地址中值的變量全部銷毀的方法:
復制代碼 代碼如下:
 < ?php
 $test = str_repeat("1",256);
 $p = &$test;
 $s = memory_get_usage(); 
 //注意,以下2個unset()順序對調沒有關系,不影響結果
 unset($p);
 unset($test); 
 $e = memory_get_usage();
 echo ' 釋放內存: '.($s-$e); //輸出為272
 ?>

到此php unset()函數論證完畢。

php技術php unset全局變量運用問題的深入解析,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 女教师二十三岁 | 99pao成人国产永久免费视频 | 99热国产这里只有精品9九 | 国产精品AV视频一二三区 | 日韩av国产av欧美天堂社区 | 亚洲绝美精品一区二区 | 国产亚洲人成网站在线观看播放 | 亚洲午夜精品A片久久软件 亚洲午夜精品A片久久不卡蜜桃 | 一区二区三区国产 | 男人桶女人j的视频在线观看 | 男人扒开添女人下部口述 | 久久久精品免费免费直播 | 丝瓜涩涩屋黄瓜香蕉丝瓜 | 欧美成人亚洲高清在线观看 | 久久亚洲欧美国产综合 | 亚洲精品国产熟女久久久 | 超碰免费视频公开97 | 顶级欧美不卡一区二区三区 | 香艳69xxxxx有声小说 | 啪啪漫画无遮挡全彩h同人 啪啪激情婷婷久久婷婷色五月 | 日本熟妇乱妇熟色A片蜜桃亚洲 | 午夜福利不卡片在线播放免费 | 欧美 日韩 亚洲 在线 | 男人边吃奶边挵进去呻吟漫画 | 思思re热免费精品视频66 | 亲伦在线观看 | 久久精品伊人 | 亚洲免费无码中文在线 | 暖暖的视频完整视频免费韩国 | 手机在线看片欧美亚洲 | 蜜桃人妻无码AV天堂三区 | 寂寞夜晚免费观看视频 | bbw美女与zooxx| 人与禽交3d动漫羞羞动漫 | 91久久精一区二区三区大全 | 超碰在线vip | 影音先锋av男人资源 | 小草观看免费高清视频 | 白丝制服被啪到喷水很黄很暴力 | 亚洲人成电影网站色2017 | 美国ZOOM动物在线观看 |