php基礎鞏固一

php基礎

基本語法形式

區(qū)分大小寫

  • 主要是指變量名區(qū)分大小寫
  • 常量通常也區(qū)分寒亥,但常量也可以自己設定為不區(qū)分(不推薦)
  • 函數(shù)名不區(qū)分
  • 系統(tǒng)中使用的關鍵字也不區(qū)分大小寫,比如if左胞, else担钮, for

語句結束符,用分號

  • 一個php標記塊中的最后一個分號可省略
  • php結束標記省略則不能省略最后一個分號

不建議省略厚棵!

變量

基本含義

變量是包含了一個名稱和一個值的“標識符”蕉世。
形式:變量必須以$開頭,后面緊跟變量名

//表示變量名$val 引用了數(shù)值1的地址
//當我們在代碼中使用$v1這個變量名窟感,就是指使用“1”這個數(shù)據(jù)值讨彼。
$va1 = 1;

注意:通常,在“能夠出現(xiàn)”變量的語法中柿祈,只要出現(xiàn)$符號哈误,并在其后出現(xiàn)緊挨著的字符,就會被識別為一個變量躏嚎,即使不存在該變量蜜自,

echo  “人民幣符合¥像個羊,美元符號$象個錢”;//這里就會有問題卢佣!

變量的基本使用

  • 定義變量(賦值):直接給變量賦值重荠,就是定義;

    • 不支持js中的那種“定義但不賦值”的語法虚茶。
    • 第一次給一個變量賦值戈鲁,就算定義變量。
  • 取值:所有需要一個變量值的語句中嘹叫,就會取得該變量的值婆殿,常見包括

    • 輸出:echo$v1; //取得$v1的值,并輸出
    • 給其他變量賦值$v2 = $v1; //取得$v1的值罩扇,并賦值給$v2
    • 參與運算:$v3 = $v1 + 3; //取得$v1的值婆芦,并跟3相加
  • 判斷變量是否存在isset()

    • 存在怕磨,就返回true,不存在就返回false
    • 實際上消约,如果一個變量的值是null肠鲫,返回的也是false
  • 修改變量值(賦值)

    • 第二次及以后給一個變量賦值,就算修改變量值
  • 刪除unset():就是斷開變量名跟數(shù)據(jù)之間的“引用關系”

命名規(guī)則

通常命名包括變量名或粮,函數(shù)名导饲,常量名,類名被啼,接口名帜消,等等

基本規(guī)則

  1. 只能使用大小寫字母,下劃線(_)浓体,數(shù)字
  2. 數(shù)字不能開頭
  3. 不能跟所在環(huán)境(系統(tǒng))的關鍵字重名(比如if泡挺, for, function...)

行業(yè)規(guī)則(潛規(guī)則)

基本規(guī)則命浴,保證的是語法的正確性娄猫。
行業(yè)規(guī)則,保證的是是否能得到別人的尊重生闲!
行業(yè)規(guī)則中媳溺,有如下幾種常用的命名規(guī)則:

  1. 駝峰命名法:
    示例:name, myName碍讯, myFatherName
  2. 帕斯卡命名法:
    示例:Name沉噩, MyName黄伊, MyFatherName
  3. 下劃線間隔法:
    示例:name悲靴, my_ame马僻, my_father_name

變量間的傳值方式

  1. 這里討論的傳值方式是指:一個變量對另一個變量
  2. 它不僅僅適用于賦值語句,也適用于其他有同樣含義的語句倍啥,比如:函數(shù)的實參到形參
  3. 傳值方式只有2種:值傳遞禾乘,引用傳遞
  4. php中,所有變量虽缕,默認都是值傳遞始藕。
  5. 要想使用引用傳遞,必須使用引用傳遞的符號: &

值傳遞

是指將一個變量的數(shù)據(jù)值(數(shù)據(jù)內容)拷貝一份氮趋,然后賦值給另一個變量伍派。

$v1 = 1;
$v2 = $v1;//有值傳遞
$v3 = $v1 + 10;//無值傳遞
Paste_Image.png

引用傳值

將一個變量的引用關系拷貝一份,然后賦值給另一個變量剩胁,即另一個變量也同樣由該關系決定了指向某個數(shù)據(jù)

$v10 = 10;
$v20 = &$v10;
Paste_Image.png

賦值(傳值)完之后拙已,兩個變量指向同樣一個數(shù)據(jù)。則:對變量v10的操作摧冀,改變的數(shù)據(jù),也就是體現(xiàn)為v20也發(fā)生了改變。

$v10++;
echo $v20;//11

在這種引用傳值的情況下索昂,unset一個變量建车,則另一個跟它有關(指向同樣數(shù)據(jù)的關系)的變量,并不受影響椒惨。

unset($v20);
echo $v10;//11
echo $v20;//報錯缤至,提示Undefined

可變變量

所謂可變變量,就是一個變量的名康谆,又是一個變量领斥。

$v1 = “abc”;        //這是一個字符串變量,其內容是字符串“abc”
$abc = 10;      //這是一個普通變量沃暗,其內容是數(shù)字10
echo  $$v1;     //此時月洛,就是所謂“可變變量”
  1. 凡是$符號出現(xiàn),就會有可能理解為是一個變量
  2. 這里第一個“$”出現(xiàn)了孽锥,則php就視圖將其解釋為一個變量嚼黔,變量名是$v1;
  3. 我們有知道,$v1的值是”abc”惜辑,
  4. 那么唬涧,第一個“$”符號后面的變量名,就得到為“abc”
  5. 即:echo 試圖輸出的是變量$abc盛撑, 自然是數(shù)字10

即從最右邊的$符號開始看起$(&v1) => $abc => 10,理論上碎节,可變變量的嵌套還可以更多,比如:$$$def;

預定義變量

  1. 預定義變量又叫超全局變量抵卫,包括:$_GET, $_POST, $_SERVER, $_REQUEST, $GLOBALS, $_COOKIE, $_SESSION, ..........(大約10個)
  2. 作用域問題:php中狮荔,自定義的變量的作用域,分兩種:全局作用域(函數(shù)外)陌僵,局部作用域(函數(shù)內)轴合。但預定義變量的作用域稱為“超全局作用域”:全局作用域 + 局部作用域的總和(函數(shù)內外全都可用)
  3. 數(shù)據(jù)類型問題:超全局變量都是數(shù)組!

$_GET變量(數(shù)組)

$_GET這個預定義數(shù)組變量碗短,就是指以GET這種方式提交的所有數(shù)據(jù)的集合(數(shù)組),例如

形式一:
<form  action=”abc.php”  method=”get” >
項目1: <input type=”text”   name=”uName”   />
項目2: <input type=”password”   name=”uPswd”   />
<input type=”submit”  value=”提交”  />
</form>

其作用是:用戶填寫表單數(shù)據(jù)受葛,并提交后,會將數(shù)據(jù)發(fā)送(提交)給頁面abc.php偎谁,其實也可以理解為“打開”該網(wǎng)頁(abc.php)总滩,還可以理解為“請求”該網(wǎng)頁(abc.php)

形式二:
<a  href=”abc.php?uName=test1&uPswd=123”>Get</a>

其作用是:用戶點擊鏈接后,會將數(shù)據(jù)發(fā)送(提交)給頁面abc.php巡雨,其實也可以理解為“打開”該網(wǎng)頁(abc.php)闰渔,還可以理解為“請求”該網(wǎng)頁(abc.php),這種請求也是get請求

形式三:
<script>
location.href = “abc.php?uName=test1&uPswd=123”;        //利用location對象的屬性href
</script>

其作用是:當該行語句執(zhí)行的時候(通常其實是在函數(shù)中)铐望,會將數(shù)據(jù)發(fā)送(提交)給頁面abc.php冈涧,其實也可以理解為“打開”該網(wǎng)頁(abc.php)茂附,還可以理解為“請求”該網(wǎng)頁(abc.php),這種請求也是get請求

形式四:
<script>
location.assign( “abc.php?uName=test1&uPswd=123”);  //利用location對象的方法assign()
</script>

其作用是:當該行語句執(zhí)行的時候(通常其實是在函數(shù)中)督弓,會將數(shù)據(jù)發(fā)送(提交)給頁面abc.php营曼,其實也可以理解為“打開”該網(wǎng)頁(abc.php),還可以理解為“請求”該網(wǎng)頁(abc.php)愚隧,這種請求也是get請求

不管哪種形式的get提交過來的數(shù)據(jù)蒂阱,獲取數(shù)據(jù)是一樣的:(在abc.php網(wǎng)頁中)

<?php
$v1 = $_GET[‘uName’];   //單引號也可以用雙引號,本質是一個字符串狂塘,其實是數(shù)組的鍵名(下標)
$v2 = $_GET[‘uPswd’];       //該鍵名必須跟提交的時候的名字完全一致(區(qū)分大小寫)
?>

下面例如輸出$_GET,首先是表單

<form action="get_1.php" method="get">
    姓名:<input type="text" name="uName">
    密碼:<input type="password" name="uPswd">
    年齡:<input type="text" name="uAge">
    <br>
    愛好:
    <input type="checkbox" name="uHobby[]" value="zuqiu" />足球
    <input type="checkbox" name="uHobby[]" value="lanqiu" />籃球
    <input type="checkbox" name="uHobby[]" value="yumaoqiu" />羽毛球
    <br>
    <input type="submit" value="提交">
</form>

php代碼

<?php 
    var_dump($_GET);
 ?>

最終輸出結果是

array(4) {
  ["uName"]=>
  string(4) "Jens"
  ["uPswd"]=>
  string(6) "123456"
  ["uAge"]=>
  string(2) "21"
  ["uHobby"]=>
  array(2) {
    [0]=>
    string(6) "lanqiu"
    [1]=>
    string(8) "yumaoqiu"
  }
}

$_POST變量(數(shù)組)

類似$_GET變量(數(shù)組)录煤,$_POST代表頁面通過post方式提交過來的數(shù)據(jù)所形成的數(shù)組。

post提交數(shù)據(jù)荞胡,通常只有一種形式:

    <form  action=”abc.php”  method=”post” >
        項目1: <input type=”text”   name=”uName”   />
        項目2: <input type=”password”   name=”uPswd”   />
        <input type=”submit”  value=”提交”  />
    </form>

其作用是:用戶填寫表單數(shù)據(jù)妈踊,并提交后,會將數(shù)據(jù)發(fā)送(提交)給頁面abc.php硝训,其實也可以理解為“打開”該網(wǎng)頁(abc.php)响委,還可以理解為“請求”該網(wǎng)頁(abc.php) 接收post數(shù)據(jù)的形式為:(在abc.php網(wǎng)頁中)

<?php
    $v1 = $_POST[‘uName’];  //單引號也可以用雙引號,本質是一個字符串窖梁,其實是數(shù)組的鍵名(下標)
    $v2 = $_POST[‘uPswd’];  //該鍵名必須跟提交的時候的名字完全一致(區(qū)分大小寫)
    
    也可以顯示所有post數(shù)據(jù):
    var_dump($_POST)
?>

通常赘风,網(wǎng)頁中的form表單,一般都用post方式纵刘,get方式主要體現(xiàn)在其他3種形式邀窃。

$_REQUEST變量(數(shù)組)

$_REQUEST數(shù)組,其實并不是一個獨立的數(shù)據(jù)來源假哎,而是$_POST數(shù)據(jù)和$_GET數(shù)據(jù)的“總和”即$_REQUEST數(shù)組中包括了所有$_POST數(shù)據(jù)和$_GET數(shù)據(jù)——其實是由系統(tǒng)內部自動存儲的瞬捕。通常,$_POST數(shù)據(jù)和$_GET數(shù)據(jù)不會“同時出現(xiàn)”舵抹,$_REQUEST數(shù)組就代表了其中之一肪虎。

無論表單的提交方法是GET或POST,其接收的方式都是

$u = $_REQUEST['XXX'];

而get和post數(shù)據(jù)同時提交的情形

<form  action="abc.php?a=5&b=10"  method="POST" > ...
    項目1: <input type=”text”   name=”uName”   />
    項目2: <input type=”password”   name=”uPswd”   />
    <input type=”submit”  value=”提交”  />
</form>

則此時惧蛹,uName和uPswd兩個數(shù)據(jù)以post方式提交給abc.php,并扇救,同時:a=5和b=10兩個數(shù)據(jù),以get方式提交給abc.php
則在頁面abc.php中:

//這樣取得get數(shù)據(jù):
$v1 = $_GET[‘a(chǎn)’];
$v2 = $_GET[‘b’];   
//這樣取得post數(shù)據(jù):
$v3 = $_POST[‘uName’];
$v4 = $_POST[‘uPswd’];
//但香嗓,也可以這樣妊盖弧(全有了):
$v1 = $_REQUEST[‘a(chǎn)’];
$v2 = $_REQUEST[‘b’];
$v3 = $_REQUEST[‘uName’]
$v4 = $_REQUEST[‘uPswd’]

當get數(shù)據(jù)和post數(shù)據(jù)同時提交并其中有重名的時候,情況怎么樣呢靠娱?

  • 盡量避免重名沧烈;
  • 如果重名了,此時$_REQUEST只會記錄(存儲)其中一個數(shù)據(jù)(要么post數(shù)據(jù)像云,要么get數(shù)據(jù))
  • 至于記錄的是哪個锌雀,是有php.ini中的一個設置項來決定:
    • request_order = “GP”; //這是默認值蚂夕,G代表GET,P代表POST腋逆。含義是:先存儲GET數(shù)據(jù)双抽,再存儲POST
    • 如果重名,此時POST就會覆蓋GET數(shù)據(jù)闲礼,改為:request_order = “PG”, 順序反過來
    • $_GET, $_POST, $_REQUEST三種數(shù)據(jù)是相互獨立的铐维。

$_SERVER變量(數(shù)組)

該變量存儲了服務器端或客戶端的一些請求信息或設置信息柬泽,比較多,而且不同的服務器和不同的請求頁面嫁蛇,其數(shù)據(jù)項都可能不同锨并。

  • 常用的有:
    • REMOTE_ADDR, 用戶的IP地址
    • SERVER_ADDR: 服務器端的IP地址
    • SERVER_NAME: 服務器名(主機名)
    • DOCUMENT_ROOT: 站點絕對路徑(其實就是主機設置中的DocumentRoot
    • PHP_SELF:當前網(wǎng)頁的文件路徑
    • QUERY_STRING: 表示一個get請求的整體字符串,類似這樣:

輸出所有項的代碼

<?php   
    foreach ($_SERVER as $key => $value) {
        echo $key . " ==> " . $value;
    }
 ?>

$GLOBALS變量(數(shù)組)

似乎是一個多余的變量:它只是把我們自己定義的所有全局變量存儲到該數(shù)組中:變量名就是該數(shù)組的下標(鍵名)睬棚,變量值就是對應的值第煮。例如

<?php 
    $va1 = 1;
    $va2 = "jehe";

    var_dump($GLOBALS);
 ?>

則輸出的結果為

array(7) {
  ["GLOBALS"]=>
  *RECURSION*
  ["_POST"]=>
  array(0) {
  }
  ["_GET"]=>
  array(0) {
  }
  ["_COOKIE"]=>
  array(0) {
  }
  ["_FILES"]=>
  array(0) {
  }
  ["va1"]=>
  int(1)
  ["va2"]=>
  string(4) "jehe"
}

常量

含義:用于存儲一個不會變化也不希望變化的數(shù)據(jù)的標示符。
常量命名規(guī)則抑党,同變量包警,但習慣說,常常將常量的名稱使用“全大寫”形式底靠。

定義形式

使用define()函數(shù)定義

  1. 使用形式:define(“常量名”害晦, 常量值),推薦常用名使用全大寫形式

例如

define("PI",3.14);
echo PI;// 3.14

使用const語法定義

  1. 使用形式: const 常量名 = 常量值;
  2. 但const語法只能在“最頂層”的代碼域中使用(不能在大括號中)暑中,也即壹瘟,const語法不能在函數(shù)中或條件語句中或其他表示一個“范圍”的語句中使用

例如

const PI = 3.14;
if(PI > 10){
    const PW = 5;// 錯誤,只能定義在最頂部
}

使用常量

  1. 直接使用名字
  2. 使用constant()函數(shù):constant(“常量名”)

例如

<?php
    define("PI",3.14);      
    echo(3.14);
    echo(constant("PI"));
    
?>

常量變量的區(qū)別

  • 定義形式不同:常量無需$符號
  • 使用形式不同:常量無需$符號
  • 可變程度不同:常量的值不可以改變鳄逾,常量也不可以銷毀
  • 作用范圍不同:常量具有超全局作用域 (函數(shù)內外都可以直接使用)
  • 可用類型不同:常量只能存儲標量類型:int稻轨,float,string雕凹,bool

判斷常量是否存在

判斷的結果為布爾值殴俱。
常用形式:if ( defined (某常量名) == false ){ .....這里可以去定義該常量;}
實際上请琳,可以這樣:
$result = defined (某常量名); //結果是true或false

使用一個未定義的常量(特殊情況)

使用一個未定義的常量會報一個錯誤(notice錯誤)——跟使用一個未定義的變量一樣——當然不推薦粱挡。但是:php,此時會得到一個意想不到的結果:似乎該常量存在俄精,并該常量的值就是該名字询筏。

Paste_Image.png

預定義常量

php語言中,預定了大量的常量竖慧,可以直接使用嫌套。其中有些常量逆屡,是需要某些模塊打開之后才有(比如mysql模塊)

  • 比如M_PI(圓周率), PHP_OS(操作系統(tǒng)), PHP_VERSION(php版本號),PHP_INT_MAX(php中的最大的整數(shù)值)
  • 參考手冊〉附錄〉保留字列表〉預定義常量

魔術常量

魔術常量其實是一種值會隨著一定的條件(環(huán)境)而變化的常量踱讨,形式和使用上是常量魏蔗,但實際上,其值會改變痹筛。

  • 比如:__DIR__(當前網(wǎng)頁文件的所在目錄)莺治,__FILE__(當前網(wǎng)頁文件),__LINE__(當前這一行)
  • 魔術常量其實類似變量帚稠,其值隨著不同代碼而變化谣旁,不區(qū)分大小寫
  • 參考手冊〉語言參考〉常量〉魔術常量

例如:

<?php 
    echo __DIR__;
    echo "<br />";
    echo __FILE__;
    echo "<br />";
    echo __LINE__;
 ?>

輸出結果為

D:\PHP\demo2
D:\PHP\demo2\get_1.php
6
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市滋早,隨后出現(xiàn)的幾起案子榄审,更是在濱河造成了極大的恐慌,老刑警劉巖杆麸,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搁进,死亡現(xiàn)場離奇詭異,居然都是意外死亡昔头,警方通過查閱死者的電腦和手機饼问,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來减细,“玉大人匆瓜,你說我怎么就攤上這事∥打颍” “怎么了驮吱?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長萧吠。 經(jīng)常有香客問我左冬,道長,這世上最難降的妖魔是什么纸型? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任拇砰,我火速辦了婚禮,結果婚禮上狰腌,老公的妹妹穿的比我還像新娘除破。我一直安慰自己,他們只是感情好琼腔,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布瑰枫。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪光坝。 梳的紋絲不亂的頭發(fā)上尸诽,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音盯另,去河邊找鬼性含。 笑死,一個胖子當著我的面吹牛鸳惯,可吹牛的內容都是我干的商蕴。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼芝发,長吁一口氣:“原來是場噩夢啊……” “哼究恤!你這毒婦竟也來了?” 一聲冷哼從身側響起后德,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎抄腔,沒想到半個月后瓢湃,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡赫蛇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年绵患,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悟耘。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡落蝙,死狀恐怖,靈堂內的尸體忽然破棺而出暂幼,到底是詐尸還是另有隱情筏勒,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布旺嬉,位于F島的核電站管行,受9級特大地震影響,放射性物質發(fā)生泄漏邪媳。R本人自食惡果不足惜捐顷,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望雨效。 院中可真熱鬧迅涮,春花似錦、人聲如沸徽龟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽顿肺。三九已至戏溺,卻和暖如春渣蜗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背旷祸。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工耕拷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人托享。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓骚烧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親闰围。 傳聞我的和親對象是個殘疾皇子赃绊,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內容