PHP基礎(chǔ)4:變量

基本概念

  • 定義
    一個$作為前綴的標(biāo)識符带欢。
  • 特性
    變量可以存放任意類型的值糯景。在編譯或運行時沒有變量的類型檢查,可以用其他不同類型的值替換一個變量的值。
  • 聲明
    不需要用顯示的語法來聲明變量橱赠。變量第一次被賦值時,該變量被創(chuàng)建箫津。設(shè)置變量的值也有聲明變量的功能狭姨。
  • 未賦值
    變量如果沒有被賦值,則其值為NULL鲤嫡。

變量的變量

  • 定義
    通過$符號作為前綴送挑,引用變量的值作為新變量的名稱。
  • 示例
$foo = "bar";
$$foo = "baz";
則
$baz = "bar";

變量的引用

  • 定義
    引用就是如何創(chuàng)建變量的別名暖眼。
$blac =& $white;
  • 解釋
    兩個變量惕耕,任意一個值改變,另一個值也隨之改變诫肠。
  • 銷毀
    銷毀其中一個變量的值司澎,不影響另一個值。
  • 函數(shù)引用
    函數(shù)可以通過引用返回值(?)
function &retRef()
{
    $var = "PHP";
    return $var;
}
$v =& retRef();

變量的作用域

  • 定義
    變量聲明的位置決定了一個變量的作用域栋豫〖钒玻總計4種類型作用域:局部作用域、全局作用域丧鸯、靜態(tài)作用域和函數(shù)參數(shù)蛤铜。
  • 局部作用域
    在一個函數(shù)中聲明。僅在函數(shù)內(nèi)部可見丛肢。全局變量不能在函數(shù)內(nèi)部訪問围肥。
  • 全局作用域
    函數(shù)外部聲明,任意部位訪問蜂怎。函數(shù)內(nèi)部需要先用global關(guān)鍵字聲明后穆刻,才可訪問。
function updateCounter()
{
    global $counter;
    $counter++;
}
$counter = 10;
updateCounter();
則
$counter = 11;

使用$GLOBALS數(shù)組

function updateCounter()
{
    $GLOBALS[counter]++;
}
$counter = 10;
updateCounter();
echo $counter;
11
  • 靜態(tài)變量
    靜態(tài)變量在一個函數(shù)被多次調(diào)用時杠步,其值不會丟失氢伟,但此變量僅在該函數(shù)內(nèi)可見(與全局變量的區(qū)別)榜轿。
function updateCounter()
{
    static $counter = 0;
    $counter++;
    echo $counter;
}
$counter = 10;
updateCounter();
updateCounter();
echo $counter;
1
2
10
  • 函數(shù)參數(shù)
    函數(shù)參數(shù)只在函數(shù)內(nèi)部有效。
function greet($name)
{
    echo $name;
}
greet("Janet");
輸出:
Janet

垃圾收集

  • 符號表
    一個變量有兩個部分朵锣,它的名字和它的值谬盐。符號表是一個將變量名映射到內(nèi)存中變量值所在地址的數(shù)組。
  • 引用計數(shù)
    符號表中的每一個值都有一個引用計數(shù)器猪勇,它的數(shù)值表示獲取那片內(nèi)存的方式的數(shù)目设褐。
    當(dāng)一個變量離開作用域颠蕴,如函數(shù)參數(shù)和局部變量到達函數(shù)末尾時泣刹,它的值的引用計數(shù)減1。當(dāng)一個變量在其他內(nèi)存空間被賦值時犀被,舊值的引用計數(shù)減1椅您。當(dāng)引用計數(shù)的值為0時,他的內(nèi)存被釋放寡键。
  • 寫時復(fù)制
    當(dāng)將一個變量的值復(fù)制到另一個變量時掀泳,PHP沒有為復(fù)制值使用更多的內(nèi)存。相反西轩,它會更新符號表來說明這兩個變量擁有相同的內(nèi)存快员舵。如果后臺修改了任意一個副本,PHP將分配所需的內(nèi)存來進行復(fù)制藕畔。
$worker = array("Fred", 35, "Wilma");
$other = $worker; // 數(shù)組不被復(fù)制
$worker[1] = 36; // 值改變马僻,數(shù)組被復(fù)制
  • 手動管理內(nèi)存
    如果要查看一個變量是否被設(shè)置甚至是空字符串,可使用isset()注服。
$s1 = isset($name);  // $s1是 false
$name = "Fred";
$s2 = isset($name);  // $s2是true

使用unset()刪除變量的值韭邓。

$name = "Fred";
unset($name); //$name 是 NULL
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市溶弟,隨后出現(xiàn)的幾起案子女淑,更是在濱河造成了極大的恐慌,老刑警劉巖辜御,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鸭你,死亡現(xiàn)場離奇詭異,居然都是意外死亡擒权,警方通過查閱死者的電腦和手機袱巨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來菜拓,“玉大人瓣窄,你說我怎么就攤上這事∧啥Γ” “怎么了俺夕?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵裳凸,是天一觀的道長。 經(jīng)常有香客問我劝贸,道長姨谷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任映九,我火速辦了婚禮梦湘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘件甥。我一直安慰自己捌议,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布引有。 她就那樣靜靜地躺著瓣颅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪譬正。 梳的紋絲不亂的頭發(fā)上宫补,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機與錄音曾我,去河邊找鬼粉怕。 笑死,一個胖子當(dāng)著我的面吹牛抒巢,可吹牛的內(nèi)容都是我干的贫贝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼虐秦,長吁一口氣:“原來是場噩夢啊……” “哼平酿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起悦陋,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蜈彼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后俺驶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體幸逆,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年暮现,在試婚紗的時候發(fā)現(xiàn)自己被綠了还绘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡栖袋,死狀恐怖拍顷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情塘幅,我是刑警寧澤昔案,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布尿贫,位于F島的核電站,受9級特大地震影響踏揣,放射性物質(zhì)發(fā)生泄漏庆亡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一捞稿、第九天 我趴在偏房一處隱蔽的房頂上張望又谋。 院中可真熱鬧,春花似錦娱局、人聲如沸彰亥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剩愧。三九已至,卻和暖如春娇斩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背穴翩。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工犬第, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人芒帕。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓歉嗓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親背蟆。 傳聞我的和親對象是個殘疾皇子鉴分,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,806評論 1 10
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)带膀,斷路器志珍,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • 1 7號床的老孫,穿著病號服端著水杯垛叨,慢慢地走到了床前伦糯,“哎,總算走了嗽元!”他把杯子先放在了床頭柜上敛纲。 “誰啊剂癌?”9...
    木徒閱讀 186評論 1 3
  • 我還記得佩谷,8歲那年旁壮。 一個寒冷的冬天辞做,老費下了班,說要帶我去一個神奇的地方寡具。 那里孕育了無數(shù)種生活的可能秤茅,存在無數(shù)...
    狒狒小姐本人閱讀 495評論 0 1
  • 「你一生中大部分的精力應(yīng)該全部只放在一件事情上。把這一件事情做到極致童叠,勝過你把一萬件事做的平庸框喳。」這個道理對我整個...
    風(fēng)墟閱讀 9,752評論 8 41