PHP變量

1.含義與定義形式

就是使用一個“標記符號”(標識符)硫痰,來代表某個數(shù)據(jù)猛遍。
通常學到的是,變量代表存儲空間以及其中數(shù)據(jù)的一個“標識符”腻窒。
變量名 指向 變量值,更深入的說是 變量指向內存的一塊區(qū)域磅崭。
類比:

  • 用一張車牌號代表某輛車辙纬。
  • 用一個身份證號碼袜茧,代表某個人。
    用一個變量,就可以理解為“使用一個數(shù)據(jù)”盯腌。
    既然是變量,就是該數(shù)據(jù)時可以改變的一種數(shù)據(jù)女器。
    對應常量:就是一種不可以(不允許)改變的數(shù)據(jù)诀蓉。
//定義形式
$變量名 = 值;
列如:$v1 = 3

這個等號(=)不是數(shù)學上等于的意思癣漆,這里的等號是賦值的意思维咸,這里本質是將數(shù)據(jù)3放到變量v1中去
\color{red}{特別要注意,變量名區(qū)分大小寫}
演示代碼如下:


變量從另一個角度理解:
變量是一個“容器”惠爽,是一個“盒子”癌蓖,是一個可以存放數(shù)據(jù)的位置——內存空間。
也可以這樣去理解:
內存(條)中分割出很多很多的小格子疆股,每個格子都有一個編號地址(所謂內存地址)费坊。
其中存儲了數(shù)據(jù)的格子上有一定的標記名(變量名),并存放了對應的數(shù)據(jù)旬痹。
圖示如下:


對應代碼如下:

$A = 200;
$B = 300

其中附井,“0xA01”讨越,“0xA02”代表內存地址。內存地址其實是我們看不到的永毅,由系統(tǒng)分配把跨。

2.變量的命名規(guī)則

2.1.基本規(guī)則

1.構成:字母、數(shù)字沼死、下劃線着逐;
2.開頭:字母或下劃線;
3.注意:變量名不要跟系統(tǒng)中的“關鍵字”(即語法所用單詞)重復

2.2.行業(yè)規(guī)則

通常意蛀,盡量將變量命名為“見名知意”耸别。
盡量用更容易理解的單詞(或拼音)去表示一個數(shù)據(jù),很多時候可以使用“多個單詞(拼音)”县钥。
比如:
ChildAge, YungerAge, ParentHouse, MyParentHouse, MyParentHousePrice
此時秀姐,通常有兩個行業(yè)中的慣例規(guī)則:

駱駝命名法(小駝峰命名法):第一個單詞首字母小寫,其余單詞首字母大寫若贮。
childAge, yungerAge, parentHouse, myParentHouse, myParentHousePrice

帕斯卡命名法(大駝峰命名法):所有單詞都首字母大寫省有。
ChildAge, YungerAge, ParentHouse, MyParentHouse, MyParentHousePrice

3.變量的4種基本操作

任何一個變量,有且只有4種對變量的“操作”

3.1賦值——常見操作將一個數(shù)據(jù)(值)放入一個變量中谴麦。

$name = "張無忌";

幾乎所有變量要想后續(xù)正常使用蠢沿,第一件事就是“賦值”。
變量初始賦值后匾效,可以后續(xù)再去重新賦值——這就是修改了變量的值舷蟀,比如:
$name = “張無不忌”;
變量賦值的本質是:將變量名,跟一個數(shù)據(jù)“建立關聯(lián)(聯(lián)系)”弧轧,圖示如下:


此時雪侥,對該變量的操作,也就是對該內存地址上的數(shù)據(jù)的操作

3.2取值——常見操作

取值精绎,就是速缨,從變量這個容器中拿到其中存儲的數(shù)據(jù)(值);
取值無處不在:凡是使用到變量代乃,并在該位置上旬牲,需要一個“數(shù)據(jù)”的時候,就會發(fā)生取值操作

3.3判斷變量isset()

就是判斷一個“變量名”是否里面存儲了數(shù)據(jù)搁吓!
判斷的結果是:true(真原茅,表示有),或者false(假堕仔,表示沒有)擂橘。
使用這個語法來判斷:isset( $變量名 );

還有一個特殊的賦值,賦值后摩骨,變量中也沒有數(shù)據(jù)通贞,如下:
$v5=null; //null是一個特殊的“數(shù)據(jù)”(值)朗若,該數(shù)據(jù)的含義是:沒有數(shù)據(jù)。即此時判斷isset(v5)的結果是"false"昌罩。

3.4刪除/銷毀變量unset()

當一個變量中存儲了數(shù)據(jù)哭懈,我們也可以去銷毀(刪除)它,語法如下:
unset( $變量名 )茎用。
刪除變量的本質是:斷開變量名跟其關聯(lián)過的那個數(shù)據(jù)之間的“聯(lián)系”遣总,圖示如下:


此時,該變量就不再指向某個數(shù)據(jù)了轨功,其isset()判斷的結果為false


4.變量值傳遞

4.1含義

是指旭斥,將一個變量的值“傳遞”給另一個變量的方式問題。
形式上古涧,就是一個變量在等號左邊琉预,一個變量在等號右邊,就表示將右邊變量的值傳給左邊的變量蒿褂。
有且只有兩種傳數(shù)據(jù)的方式:值傳遞,和引用傳遞

4.2值傳遞

就是將右邊變量的“數(shù)據(jù)值”本身卒暂,復制一份啄栓,然后賦值給左邊變量。
形式如下:

$變量1 = $變量2;

舉列:

$v1 =1;
$v2 = $v1;

可見:
值傳遞之后也祠,兩個變量互不影響昙楚,相互獨立,沒有關系了诈嘿!
其原理如下所示:


可以看到堪旧,此時兩個變量在賦值之后,就相互獨立奖亚,各自有自己的存放空間淳梦。改變一個,另一個不受影響昔字。
實列演示如下:


實列代碼如下:

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <?php
    //值傳遞演示
    $v1 = 1;
    $v2 = $v1;
    //$v3 = $v1 + 10;//注意: 這種不叫值傳遞
    echo "<br>v2為:",$v2;//1;
    $v1 =2;   //改變v1的值為2
    echo "<br>v2為:",$v2;//1;
    $v1 = 3; //再次改變v1的值
    echo "<br>v2為:",$v2;//1;
     ?>
  </body>
</html>

值傳遞總結
1.在傳值的那個時刻爆袍,兩個變量的值是一樣的。
2.在值傳遞完成以后作郭,兩個變量之間沒有任何關系陨囊。

4.3引用傳遞

是將右邊變量對數(shù)據(jù)的引用關系,傳給左邊的變量夹攒。
圖示如下:


實列演示如下:

image.png

實列代碼如下:

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <?php
    //引用傳遞演示
    $v1 = 1;
    $v2 = &$v1;//賦值時加一個引用符號"&"
    echo "<br>v2為:",$v2;//1;
    $v1 =2;   //改變v1的值為2
    echo "<br>v2為:",$v2;//2;
    $v2 = 3; //改變v2的值為3
    echo "<br>v1為:",$v1;//3;
     ?>
  </body>
</html>

引用傳遞總結
1.在引用傳值的時刻兩個變量的值一樣;
2.在之后蜘醋,兩個變量的值也是一樣,改變任何一個另外一個也會跟著改變咏尝。

5.預定義變量

在PHP語言內部压语,有一些(大概10多個)變量啸罢,是現(xiàn)成的,直接可以使用无蜂,這就是所謂預定義變量伺糠。
我們要做的是事情就是:理解該變量是什么意思,以及怎么用斥季!

5.1$_GET變量

代表瀏覽器表單通過“get”方式提交的所有數(shù)據(jù)(集)训桶,可以稱為“get數(shù)據(jù)”。
也可以理解為:
$_GET變量里面會“自動存儲”(保存/裝載)提交到某個文件中的GET數(shù)據(jù)酣倾。
而GET數(shù)據(jù)舵揭,是在一個頁面以“get”方式請求的時候提交的數(shù)據(jù)
代碼演示
制作一個表單,有兩個輸入框躁锡,可以輸出數(shù)字午绳,并提交。
到另一個頁面(文件)中映之,計算這兩個數(shù)字的和拦焚!


代碼如下:
1.get_form.php

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <form  action="get_data.php" method="get">
      <input type="text" name="username" >
      <br>
      <input type="text" name="age" >
      <br>
      <input type="submit" value="提交">
    </form>
    <?php
     ?>
  </body>
</html>

2.get_data.php

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
  <?php
  $username = $_GET['username'];
  $age = $_GET['age'];
  echo "<br>姓名為:",$username;
  echo "<br>年齡為:",$age;
     ?>
  </body>
</html>

5,2$_POST變量

代表瀏覽器表單通過“post”方式提交的所有數(shù)據(jù)(集),可以稱為“POST數(shù)據(jù)”杠输。
也可以理解為:
$_POST變量里面會“自動存儲”(保存/裝載)提交到某個文件中的POST數(shù)據(jù)赎败。
而POST數(shù)據(jù),是在一個表單中以“post”方式提交的數(shù)據(jù)
代碼演示
有個表單蠢甲,兩個輸入框僵刮,可以填寫數(shù)字,有一個“提交按鈕”鹦牛,點擊計算搞糕,可以計算他們的乘積并輸出


代碼如下:
1.post_form.php

<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <h1>輸入兩個數(shù)字并計算相乘的結果</h1>
    <form  action="post_data.php" method="post">
      <input type="text" name="num1" >
      <br>
      <input type="text" name="num2" >
      <br>
      <input type="submit" value="計算">
    </form>
  </body>
</html>

2.post_data.php

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <?php
    $num1 = $_POST['num1'];
    $num2 = $_POST['num2'];
    $result = $num1 * $num2;
    echo "<br>num1和num2相乘的結果為:",$result;
       ?>
  </body>
</html>

5,3$_REQUEST變量

代表瀏覽器通過“get”方式 或 “post”方式提交的數(shù)據(jù)的合集。
即:它既能接收到get過來的數(shù)據(jù)曼追,也能接收到post過來的數(shù)據(jù)窍仰!
通常,一個表單拉鹃,只提交一種形式的數(shù)據(jù)辈赋,要么get數(shù)據(jù),要么post數(shù)據(jù)膏燕!
代碼演示
但钥屈,有一個情況,提交post數(shù)據(jù)的同時坝辫,也可以提交get數(shù)據(jù):


代碼如下:
1.request_form.php

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <form class="" action="request_data.php?id=5&username=張三豐" method="post">
      <!--這樣寫的話表單就可以同時使用get和post兩種提交方式了,
    表單里action地址問號后面的數(shù)據(jù)是以get方式提交的篷就,form表單中
    各個表單項的數(shù)據(jù)是以post的方式提交的-->
      <input type="text" name="num1" >
      <br>
      <input type="text" name="num2" >
      <br>
      <input type="submit" value="計算">
    </form>
  </body>
</html>

2.request_data.php

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <?php
    $num1 = $_REQUEST['num1'];
    $num2 = $_REQUEST['num2'];
    $result = $num1 * $num2;
    $username = $_REQUEST['username'];
    echo "<br>num1和num2相乘的結果為:",$result;
    echo "<br>這個人的名字叫:",$username;
     ?>
  </body>
</html>

5.4$_SERVER變量

它代表任何一次請求中,客戶端或服務器端的一些“基本信息”或系統(tǒng)信息近忙,包括很多(10多項)竭业。
我們無非就是要知道智润,哪些信息是可以供我們使用的!

常用的有:
PHP_SELF: 表示當前請求的網(wǎng)頁地址(不含域名部分)
SERVER_NAME: 表示當前請求的服務器名
SERVER_ADDR: 表示當前請求的服務器IP地址
DOCUMENT_ROOT: 表示當前請求的網(wǎng)站物理路徑(apache設置站點時那個)
REMOTE_ADDR: 表示當前請求的客戶端的IP地址
SCRIPT_NAME: 表示當前網(wǎng)頁地址
代碼演示如下:


代碼如下:

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <?php
/**
    PHP_SELF:           表示當前請求的網(wǎng)頁地址(不含域名部分)
    SERVER_NAME:    表示當前請求的服務器名
   SERVER_ADDR: 表示當前請求的服務器IP地址
   DOCUMENT_ROOT:   表示當前請求的網(wǎng)站物理路徑(apache設置站點時那個)
   REMOTE_ADDR:     表示當前請求的客戶端的IP地址
   SCRIPT_NAME:     表示當前網(wǎng)頁地址
**/
echo "<br>您訪問的網(wǎng)頁為:",$_SERVER['PHP_SELF'];
echo "<br>您訪問的網(wǎng)站為:",$_SERVER['SERVER_NAME'];
echo "<br>您訪問網(wǎng)站的物理路徑為:",$_SERVER['DOCUMENT_ROOT'];
echo "<br>您訪問的IP為:",$_SERVER['REMOTE_ADDR'];
     ?>
  </body>
</html>

6.可變變量

含義:變量名本身又是一個“變量”的變量未辆。
示例:

$v1 = 10;
echo  $v1;  //輸出10
$str = “v1”;    //這是一個變量窟绷,名為str,值為“v1”(字符串)
echo  $$str;    //輸出10咐柜。這里兼蜈,“$$str”就是所謂的“可變變量”
//相當于 echo  $v1;    結果就是10

代碼演示如下:


代碼如下:

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <?php
    $a = 15;
    $b = "a";
    $c ="b";
    echo $$$c;//10 相當于$$b=>$a
     ?>
  </body>
</html>

·

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市拙友,隨后出現(xiàn)的幾起案子为狸,更是在濱河造成了極大的恐慌,老刑警劉巖遗契,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辐棒,死亡現(xiàn)場離奇詭異,居然都是意外死亡牍蜂,警方通過查閱死者的電腦和手機漾根,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鲫竞,“玉大人立叛,你說我怎么就攤上這事」泵” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵其做,是天一觀的道長顶考。 經(jīng)常有香客問我,道長妖泄,這世上最難降的妖魔是什么驹沿? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮蹈胡,結果婚禮上渊季,老公的妹妹穿的比我還像新娘。我一直安慰自己罚渐,他們只是感情好却汉,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著荷并,像睡著了一般合砂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上源织,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天翩伪,我揣著相機與錄音微猖,去河邊找鬼。 笑死缘屹,一個胖子當著我的面吹牛凛剥,可吹牛的內容都是我干的。 我是一名探鬼主播轻姿,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼犁珠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了踢代?” 一聲冷哼從身側響起盲憎,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎胳挎,沒想到半個月后饼疙,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡慕爬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年窑眯,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片医窿。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡磅甩,死狀恐怖,靈堂內的尸體忽然破棺而出姥卢,到底是詐尸還是另有隱情卷要,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布独榴,位于F島的核電站僧叉,受9級特大地震影響,放射性物質發(fā)生泄漏棺榔。R本人自食惡果不足惜瓶堕,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望症歇。 院中可真熱鬧郎笆,春花似錦、人聲如沸忘晤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽设塔。三九已至苍息,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背竞思。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工表谊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盖喷。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓爆办,卻偏偏與公主長得像,于是被迫代替她去往敵國和親课梳。 傳聞我的和親對象是個殘疾皇子距辆,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內容

  • Nginx 的配置文件使用的就是一門微型的編程語言,許多真實世界里的 Nginx 配置文件其實就是一個一個的小程序...
    SkTj閱讀 4,195評論 0 7
  • 變量 前面我們只是簡單的描述了變量的定義和賦值暮刃,這節(jié)我們詳細講解php變量 變量的值傳遞 php的變量和其它編程語...
    董澤平閱讀 168評論 0 1
  • 變量覆蓋 0x01 register_globals register_globals是php.ini里的一個配置...
    l0st閱讀 774評論 0 0
  • 6月21日跨算,環(huán)衛(wèi)局渣管科對轄區(qū)內的施工工地及渣土運輸車輛進行日常巡查。
    wuouwuouou閱讀 111評論 0 0
  • 如何進行負債的規(guī)劃背犯,如何進行自救,如何如何重新東山再起盅抚? 上一篇談到貧窮的原因漠魏,這次談論的你是比貧窮更可怕的是負債...
    齊攀閱讀 7,526評論 9 17