日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

深入理解php中unset()

瀏覽:126日期:2022-09-08 08:20:50
概述

unset()經常會被用到,用于銷毀指定的變量,但它有自己的行為模式,如果不仔細的話可能會被中文解釋給迷惑:

先來看看官方文檔的說法:

unset  —— unset a given variable

void unset (mixed $var [,mixed $...]); 

parameters:

var:The variable to be unset.    //要unset的變量

...:Another variable ... //其他需要unset的變量

return Values:No value is returned.    //unset不返回值

Because this is a language construct and not a function,it cannot be called using variable functions.

//unset()是語言結構,不是函數,因此不能被函數變量調用,具體參照函數變量。

使用function_exists(’unset’)返回的false,以此證明unset并不是一個函數,所以無法使用$fun=’unset’;$fun()的方式調用unset()

It is possible to unset even object properties visible in current context.

//通用環境下unset可以銷毀對象或者對象的可見屬性(public)

It is not possible to unset $this inside an object method since PHP5

在php5之前unset無法銷毀對象中的$this方法

when using unset() on inaccessible  object properties,the __unset() overloading method will be called,if declare.

當unset()無法銷毀對象中的屬性,例如私有屬性,保護屬性,那么會自動加載對象中的__unset方法。

description:

unset() destroys the specified variables.     //unset()銷毀指定的變量

The behavior of unset() inside of a function can vary dependiing on what type of variable you are attempting to destroy.

//unset()的行為在函數內部可以根據你所指定銷毀的變量類型變化。

變化情況情況一:

if a globalized variable is unset() inside of a function,only the local variable is destroyed.The variable in the calling environment will retain the same value as before unset() was called.

如果在函數內一個使用global使其全局化的變量,使用unset進行銷毀,那么只有局部的變量會被銷毀,在調用環境的變量將會保留沒有使用unset()銷毀之前的調用的變量值。

the example:

<?phpfunction destroy_foo() { global $foo; unset($foo);}$foo = ’bar’;destroy_foo();echo $foo;?>

the above example will output:bar

這是官方文檔的例子,可能這樣還是不太明顯,把上面的例子改成下面這樣,一切就很清晰了。

<?php function des(){global $foo;$foo=’bars’;unset($foo);echo $foo;}$foo=’bar’;echo 'The globalized variable is unset() inside of a function:';des();echo '<br/>';echo 'The variable in the calling environment:';echo $foo;

上面的例子會返回如下結果:

深入理解php中unset()

可以看到函數內echo $foo會得到錯誤提示該變量沒有定義,因為unset將$foo在函數內的局部變量銷毀了。

而外部調用環境的$foo仍保留著沒有被unset進行銷毀,上面官方描述上寫了調用環境的$foo將保留的是在使用unset()前的變量值,因此echo出bars,而不是bar。

to unset() a global variable inside of a function,then use the $GLOBALS array to do so.

如果要用unset()銷毀函數中的全局變量,應該使用$GLOBALS數組形式

function destroy_foo(){unset($GLOBALS[’foo’]);}$foo = ’bar’;destroy_foo();echo $foo;

the above example whill output: Notice: Undefined variable: foo in ...

延伸:

這里可以明確一點,函數內global修飾的變量$var會使其全局化,但和$GLOBALS[’var’]性質不同,雖然他們都是使用的外部調用環境的$var,但是函數內global $var里保存的只是外部環境調用變量$val的一個指針或者同名引用,而$GLOBALS[’var’]是外部調用環境$var本身,因此unset在函數內對兩者進行銷毀會產生上面例子的不同的原因,前者銷毀的只是保存同名引用或者指針的變量$var,后者銷毀的是外部調用變量$var本身。

情況二:

if a variable  that is PASSED BY REFERENCE is unset() inside of a function,only the local variable is destroyed.The variable in the calling environment will retain the same value as before unset() was called.

如果一個被引用的函數在函數內部使用unset()進行銷毀,那么只有函數內部的局部變量被銷毀,而調用環境變量仍然會保留unset()之前被調用的值。

<?php function foo(&$bar){unset($bar);$bar='blah';}$bar=’something’;echo $bar.'n';foo($bar);echo $bar.'n';

The above example will output:something something

這個和上面global其實很相似,函數內部引用的變量$bar其實保存的是外部環境變量$bar的指針或者說外部變量$bar的引用,因此unset在函數內部銷毀的并不是外部環境調用的變量,因此外部環境調用的變量$bar還存在。

情況三:

if a static variable is unset() inside of a function,unset() destroys the variable only in the context of the rest of a function.Following calls will restore the previous value of a variable.

如果是函數內部的靜態變量使用unset(),unset()銷毀掉函數內部的靜態變量,但是下次調用會恢復之前該靜態變量的值。 為了更明顯,下面的例子進行對比,這里對官方的范例進行了修改對比:

<?php function fun1(){static $count=0;$count++;echo 'before:'.$count.' ';$count=’2’;echo 'after'.$count.' ';}for($i=0;$i<5;$i++){fun1();echo '<br/>';}

output: 

深入理解php中unset()

下面使用unset:

<?php function fun1(){static $count=0;$count++;echo 'before:'.$count.' ';unset($count);$count=’2’;echo 'after'.$count.' ';}for($i=0;$i<5;$i++){fun1();echo '<br/>';}

output: 

深入理解php中unset()

兩個對比可以看出,unset只是將函數內部的靜態變量進行了銷毀,但沒有銷毀儲存在內存里的該靜態變量的值,因為在函數內部用static聲明的靜態變量存儲的僅僅是指向內存存儲該靜態變量的一個指針,因此unset()銷毀的時候也僅僅是銷毀了該指針,但存儲在內存里的靜態變量值沒有受到影響,因此再次調用該函數的時候,static該變量再次建立了與內存中該變量的指針關系,而上一次調用時unset()之前的該變量值依舊存在,因此會恢復該變量上一次的值,因此$count進行了遞增。

以上就是深入理解php中unset()的詳細內容,更多關于php unset()的資料請關注好吧啦網其它相關文章!

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品视频久久| 九一精品国产| 日韩精品三级| 综合国产精品| 日韩精品欧美大片| 日本电影久久久| 欧美一区91| 国产精品久久久久av蜜臀| 午夜久久av| 国产亚洲精品精品国产亚洲综合| 欧美日本不卡高清| 久久一区精品| 中文字幕在线视频久| 久久视频国产| 香蕉成人久久| 天堂久久一区| 国产精品白丝久久av网站| 精品国产亚洲一区二区三区大结局| 美女av一区| av在线最新| 欧美日韩免费观看一区=区三区| 蜜桃久久久久久| 91免费精品国偷自产在线在线| 日韩欧美中文字幕在线视频| 欧美另类中文字幕| 高清久久精品| jiujiure精品视频播放| 综合一区av| 精品欧美视频| 波多野结衣一区| 日本aⅴ免费视频一区二区三区| 麻豆精品视频在线观看视频| 久久久久免费| 亚洲一区欧美二区| 7777精品| 日韩大片在线播放| 99re国产精品| 国产美女亚洲精品7777| 久久精品资源| 欧美在线亚洲综合一区| 日韩三级久久| 日韩一区三区| 日本成人精品| 亚洲风情在线资源| 最新国产精品视频| 国产高潮在线| 模特精品在线| 久久免费影院| 蜜臀av一区二区在线免费观看| 免费在线亚洲| 最新亚洲激情| 精品网站aaa| 视频在线观看91| 麻豆精品蜜桃视频网站| 国产一区91| 精品国产亚洲一区二区三区在线| 亚洲大全视频| 国产精品3区| 日韩一区二区免费看| 国产精品4hu.www| 午夜在线视频观看日韩17c| 久久av综合| 蜜臀av性久久久久蜜臀aⅴ四虎| 精品美女视频| 蜜桃免费网站一区二区三区 | 97精品中文字幕| 蜜臀av一区二区在线免费观看| 国产精品大片免费观看| 在线视频免费在线观看一区二区| 欧美精品导航| 日韩在线a电影| 国产精选在线| 日本欧美大码aⅴ在线播放| 久久黄色影院| 久久精品资源| 日韩中文字幕视频网| 久久久夜夜夜| 麻豆国产精品777777在线| 香蕉成人久久| 婷婷激情一区| 国产精品宾馆| 日韩精品视频中文字幕| 亚洲91久久| 精品国产一区二区三区av片| 日韩一区二区三区四区五区| 欧美久久精品一级c片| 国产成人久久| 国产精品一国产精品k频道56| 久久xxxx| 亚洲午夜视频| 天堂√8在线中文| 国产精品网址| 日本不卡的三区四区五区| 婷婷精品进入| 日韩在线观看不卡| 精品一区电影| 国产极品久久久久久久久波多结野 | 欧美freesex黑人又粗又大| 欧美精品中文| 日本在线成人| 亚洲人亚洲人色久| 国产精品腿扒开做爽爽爽挤奶网站| 亚洲最新无码中文字幕久久| 国产精品亚洲人成在99www| 中文字幕一区二区精品区| 亚洲激情欧美| 亚洲激情二区| 亚洲欧美日韩国产一区| 亚洲成人国产| 日韩在线观看不卡| 久久精品成人| 亚洲高清av| 欧美 日韩 国产精品免费观看| 日韩激情一区| 色婷婷精品视频| 日韩国产一区| 秋霞影视一区二区三区| 蜜桃91丨九色丨蝌蚪91桃色| 美女av一区| 欧美精选视频一区二区| 精品在线91| 激情婷婷亚洲| 欧美日韩四区| 私拍精品福利视频在线一区| 国产白浆在线免费观看| 国产午夜一区| 国产图片一区| 免费视频一区二区三区在线观看| 亚洲精品四区| 日韩高清欧美激情| 欧美精品观看| 日韩在线中文| 日韩成人午夜精品| 日韩精品1区| 免费在线观看精品| 日韩在线观看| 国产精品美女久久久久久不卡| 亚洲欧美伊人| 中文字幕亚洲精品乱码| 91成人精品| 久久精品九色| 亚洲人成网77777色在线播放| 欧美激情视频一区二区三区免费 | 自拍日韩欧美| 日本美女一区| 国产一区三区在线播放| 亚洲精品在线a| 久久夜色精品| 日韩av字幕| 一区免费在线| 亚洲图片久久| 国模 一区 二区 三区| 中文无码日韩欧| 久久影视三级福利片| 婷婷激情一区| 欧美黑人做爰爽爽爽| 你懂的国产精品| 久久狠狠久久| 激情不卡一区二区三区视频在线| 日韩国产欧美| 中文欧美日韩| 欧美私人啪啪vps| 精品日本视频| 亚洲婷婷免费| 欧美久久久网站| 久久爱www成人| 久久国产中文字幕| 免费观看在线综合| 美女视频黄久久| 国产一区欧美| 日韩精品高清不卡| 精品视频91| 91精品高清| 国产精品久久久久久久久久齐齐 | 精品国产aⅴ| 久久国产小视频| 亚欧成人精品| 福利欧美精品在线| 免费观看在线色综合| 精品国产欧美日韩| 国产精品丝袜xxxxxxx| 麻豆精品视频在线观看| 女同性一区二区三区人了人一| 国产精品视频一区视频二区| 99精品综合| 欧美中文一区| 欧美日韩视频免费观看| 日韩制服丝袜av| 国产精品久久久久久久久久白浆 | 亚洲一区av| 热三久草你在线| 亚洲精品一级| 久久久国产精品一区二区中文| 午夜电影一区| 国产精品久久久久蜜臀| 亚洲欧美日本国产| 久久国产电影| 久久精品国产在热久久| 日韩中文字幕区一区有砖一区 | 亚洲一区二区免费在线观看|