PHP基本文法的介紹

來源:互聯網
上載者:User
這篇文章主要介紹了關於PHP基本文法的介紹,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

知識點:

  1. 標記符,注釋

  2. 變數

  3. 常量

  4. 資料類型

  5. 運算子

  6. 流程式控制制

標記符,注釋

  4種標記符號:

    1. 預設形式: <?php php語句 ?>

      如果<?php ...?>之後沒有html代碼,則 ?> 標記可以省略

    2. 短標籤形式: <? php語句 ?>

      預設是關閉的,需要開啟配置項【php.ini】: short_open_tag=on

    3. script標籤形式: <script language=”php”> php語句 </script>

    4. asp形式: <% php語句 %>

      預設是關閉的,需要開啟配置項【php.ini】:asp_tags =on

  大小寫

    變數: 區分大小寫

    常量: 區分大小寫, 可以在php.ini檔案中配置為不區分大小寫

    其他不區分大小寫: 如函數名,系統關鍵字...

  注釋

    單行注釋: //注釋內容 或 #注釋內容

    多行注釋: /*注釋內容*/

變數

  概念:

    代表一定儲存空間及其中資料的一個“標識符”

    賦值同時定義變數, $v1 = 1; 圖示:

  命名規則

    以字母或底線開頭 後跟任意數量(含0個)字母,數字和底線

    常見命名:

       駱駝命名法: 首單詞小寫,其後面每個單字首大寫 。 如: $myName
       帕斯卡命名法:每個單字首大寫 。 如: $MyName
       底線分割法:每個單詞小寫,並且之間用底線分開 。 如:$my_name

  基本操作

    取值 如 $v = 12.3; $m=round($v)

    賦值 如 $v = 12.3;

    判斷 isset() 判斷該變數是否存在,或該變數是否有資料值!

    刪除unset():斷開該變數名跟該變數原有的資料值之間的“參考關聯性”

  傳值形式

    值傳遞: 值相等,相互獨立。 如 $v1 = 1; $v2 = $v1; 圖示:

        既是將變數$v1的值進行了複製,然後再給另一變數v2賦值

    引用傳遞: 實質就是2個變數指向同一個資料空間。 如 $m1 = 1; $m2 = & m1; 圖示:

        既將變數$m1跟其資料值之間的“參考關聯性”,複製一份,再給予變數$m2  

  可變變數

    連續出現“$”的變數形式。 如: $v = "a"; $a=10; 則 $$v = 10.

 1 <?php  2      //可變變數  3     $v1 = 123;   4     $v2 = 221;  5     $v3 = 3;  6     $v4 = 9;  7     $v5 = 100;  8     $v6 = 200;  9  10     //求變數的和 11     $sum = 0; //用於儲存和 12     for($i = 1; $i <= 6; $i++) { 13         $v = "v".$i;  14         $sum += $$v;15     }16     echo $sum;17 ?>

點擊查看-可變變數使用

  預定義變數

    超全域數組,有超全域範圍,系統定義與維護 。主要有$_POST, $_GET,$_REQUEST,$_SERVER,$GLOBALS, $_COOKIE,$_SESSION ....

    $_POST 通過表單以post方式(method=”post”)提交的時候所提交的所有資料 接收資料如: $name = $_POST['name'];

      表單提交資料注意: 對於radio和checkbox資料不填則接收不到,其他不填也會接收到

    $_GET 通過get方式提交時所提交的所有資料 接收資料如: $name = $_GET['name'];

      有5種方式實現get提交資料  

        形式1: form表單get提交

            如 <form method="get" action="index.php"> ...... </form>

        形式2: a標籤提交

             如 <a href=”index.php?name=young&gender=male&age=18”>首頁</a>

        形式3: js跳轉提交1  

             如:<script> location.href=” index.php?name=young&gender=male&age=18”; </script>

        形式4:js跳轉提交   

            如:<script>location.assign=” index.php?name=young&gender=male&age=18”; </script>

        形式5: php跳轉提交

             如:header(“location: index.php?name=young&gender=male&age=18”);

    $_REQUEST 是$_GET變數和$_POST變數資料的“合集”:即,它裡面同時儲存了這兩種資料 . 接收資料如: $name = $_REQUEST['name'];

      提交表單可以同時具有get和post資料。

        如 <form method="post" action="index.php?name=young&gender=male">.....</form>

      接收資料時, 如果post與get資料項目名稱相同,如$_POST['name']='young', $_GET['name']='admin'。

        如果使用$_REQUEST方式接收,則post資料覆蓋get資料。

        可以通過配置項【php.ini】進行設定: request_order="GP" G代表GET P代表POST 後者覆蓋前者

    $_SERVER  代表一次瀏覽網頁的過程中的瀏覽器端的一些資訊或伺服器端的一些資訊

      常用選項:

        $_SERVER["REMOTE_ADDR"] 訪問者IP地址

        $_SERVER["SERVER_ADDR"] 伺服器IP地址

        $_SERVER["SERVER_NAME"] 伺服器名字 既網站配置中設定的ServerName 如: www.test.com

        $_SERVER['DOCUMENT_ROOT'] 網站物理地址。 既網站配置中設定的 DocumentRoot 如: d:/www

        $_SERVER["PHP_SELF"] 當前網頁地址,不包含網域名稱 如 /index.php

        $_SERVER["SCRIPT_FILENAME"] 當前網頁的實體路徑 如 d:/demo/index.php

        $_SERVER["QUERY_STRING"] 擷取當前網頁地址中的所有get資料(既 ?號後面部分),但只是一個整體的字串而已 如:id=2&name=young

    $GLOBALS :儲存所有全域變數。 可以用於在局部範圍不可以使用全域變數的時候,可以用它來取得指定全域變數的值

  isset() 與 empty()

    isset(變數): 判斷變數是否存在或變數是否為空白(null),如果存在,返回true,否則返回false

    empty(變數): 判斷變數的“內容”是否為空白的,內容是空的返回true,否則返回false

      為空白情形: 0 0.0 “” “0” false null array()空數組

常量

  概念

    含義: 是其中儲存的資料不會也不應該改變的“標識符”

   定義

    方式1: define('常量名',值); 如: define('PI',3.14);

    方式2: const 常量名=值; 如: const HOST='localhost';

      注意: const文法只能用在“頂層代碼”位置,而不能用在大括弧的位置

  取值

    形式1: 直接使用常量名 如: echo PI;

    形式2: 使用函數constant('常量名') 如 echo constant('PI');

  與變數的區別

    定義形式不同
    使用形式不同:常量無需$符號
    可變程度不同,常量的值不可以改變,常量也不可以銷毀
    作用範圍不同:常量具有超全域範圍(函數內外都可以直接使用)
    可用類型不同:常量只能儲存標量類型(整數,浮點數,字串,布爾值)

  判斷是否存在

    defined(“常量名”) 存在返回true 不存在返回false

    使用未定義常量,會有Notice警告,系統會將該 未定義常量名稱 作為 其值 使用

   預定義常量

    常見: 【可參考PHP手冊附錄》保留字列表》預定義常量】

      M_PI: 就是圓周率的常量值
      PHP_OS: 就是PHP運行所在的作業系統
      PHP_VERSION: 就是PHP的版本號碼
      PHP_INT_MAX: php中的最大的整數值

  魔術常量

    __FILE__ 代表當前網頁檔案的網頁實體路徑
    __DIR__ 代表當前網頁檔案所在的目錄
    __LINE__ 代表這個常量名當前所在的行號

資料類型

  8種資料類型

    基礎資料型別 (Elementary Data Type)(標量類型)

      整數型別: int interger
      浮點類型: float double    如: $v1 = 123.456E2; //含義為: 123.456乘以10的2次方

        不要用浮點數進行大小比較, 如果要比較的浮點數,轉換為整數之後再比較。如 要求精度為3位小數,則都乘以1000,然後取整後比較

        當整數運算的結果超出整數的範圍後,會自動轉換為浮點數
      字串類型: string
      布爾類型: bool Boolean

    複合類型:

      數組:array

      對象:object

    特殊類型:

      空類型 null 這種類型中,只有一個資料,那就是null
      資源類型 resource

  整數類型進位轉換

    整數類型

      0b1010(二進位), 0123(八進位),  123(十進位),  0x123(十六進位)

      Bin: 二進位   oct: 八進位    dec: 十進位 hex: 16進位

    手工進位轉換

      10進位轉換為2進位: 除2取餘倒著寫出所有餘數

          將一個10進位數字除以2,得到商和餘數,如果商還大於等於2,則繼續除以2,繼續得到商和餘數,依次類推,

          直到商為0為止,然後將前面的所有餘數按倒序寫出來對應的2進位數字

      10進位轉換為8進位: 除8取餘倒著寫出所有餘數

      10進位轉換為16進位:除16取餘倒著寫出所有餘數

      8進位轉換為10進位:將8進位數位每個位上的數乘以其對應位上的權值,然後相加之後的結果

      16進位轉換為10進位:將16進位數位每個位上的數乘以其對應位上的權值,然後相加之後的結果

      2進位轉換為10進位:將2進位數位每個位上的數乘以其對應位上的權值,然後相加之後的結果

      小數二進位的做法: 乘2並順序取整數部分

    十進位轉換為其他進位

      decbin(一個10進位數字):結果返回的是該數位2進位數字形式的字串
      decoct(一個10進位數字):結果返回的是該數位8進位數字形式的字串
      dechex(一個10進位數字):結果返回的是該數位16進位數字形式的字串

    其他進位轉換為十進位

      bindec (一個2進位數字字串):結果返回的是該2進位數字字串對應的10進位數字形式的數字
      octdec (一個8進位數字字串):結果返回的是該8進位數字字串對應的10進位數字形式的數字
      hexdec (一個16進位數字字串):結果返回的是該16進位數字字串對應的10進位數字形式的數字

  擷取資料類型

    getType($變數): 返回的是該類型的名字 (字串)
    var_dump($變數): 會輸出該變數的類型,資料內容,(以及長度)

  4種形式的字串

形式1:單引號 $str=‘hello’;  可以識別的轉義符有: \\ \'
形式2:雙引號 $str = "hello"; 可以識別的轉義符有: \\ \" \n(分行符號) \r(斷行符號符) \t(tab符)
形式3:雙引號定界符heredoc: 可以識別的轉義符有: \\ \n \r \t \$

1  $str= <<<"LAB"2         this is a “test”!,這是一個'測試'!v1=$v1;3 LAB;4 //註:結束行只能是標識符及分號

形式4:單引號定界符nowdoc:

1 $str = <<<'LAB'2         this is a test!3 LAB;

  資料類型轉換

    在任何運算中,如果需要某種類型的資料,而給出的資料不是該類型,通常都會發生自動轉換

    自動轉換: 由“運算子”或類似運算子語句決定

        算術運算,只對數值進行計算

        字串中數位轉換規則:只識別字串的前面數字部分 如 1+ “3a5b” =4

    強制轉換

      形式: (目標類型)資料 如 (int)$a;

      目標類型通常有:int,float,string,bool,array,object

      轉換不改變變數本身,要改變變數本身,使用setType($var,$value);

  常見的類型相關的系統函數

    var_dump() 列印變數的完整資訊
getType($var) 擷取變數的類型的名字(字串)
setType($var,$type) 強制轉換變數的類型
isset() 變數是否設定
empty() 變數的值是否為空白
unset() 刪除變數
is_xx系列函數: 判斷是否為某種類型
is_int($x)   判斷是否是一個整數類型
is_float()    判斷是否是一個浮點類型
is_string()  判斷是否是一個字串類型
is_bool()   判斷是否是一個布爾類型
is_array()   判斷是否是一個數組
is_object()  判斷是否是一個對象
is_null()   判斷是否是為null
is_numeric() 是否是一個數字
is_scalar()   是否是一個標量類型(int,float,bool,string)

運算子

  算術運算子

     符號: + - * / % ++ --

     用於對數字進行運算,如果符號兩邊是非數字,會自動轉換為數字再進行運算。

     求餘(%)運算,先取整在求餘。 如 11.3%3 相當於 11%3。

     ++, -- 只能對於數字或字母。字串也可以進行自增減。

      如: $val = "abc" ; $val++; echo $val; //$val ="abd";

         $va = "abc9"; $va++; echo $va; //$va="abd0";

    “前自增” 先對變數自加再做其他運算,“後自增”先做其他運算再對自加變數加1; 自減類似。

  比較子

    符號: > < >= <= == != === !==

    不要對浮點數進行大小比較。

    標量之間比較規則:

      比較的資料中,有布爾值,則自動轉為布爾值載進行比較。

      否則, 如果比較的資料中,有數字值,則自動轉為數字進行比較。

      否則,如果比較的資料都是“數字字串”,則自動轉為數字再進行比較

      否則,按照字串進行比較  

  邏輯運算子

    符號: && || !

    邏輯運算注意短路現象。如果有多想判斷,將簡單的放在前面。

  字串運算子

    符號: . .=

    字串串連, 如果兩邊不是字串,會自動轉換為字串進行串連

  賦值運算子

    = += -= *= /= %=

  條件運算子(三目)

    形式: 資料值1 ? 結果值1 : 結果值2;

    if等價形式: if(資料值1){ 結果值1;} else {結果值2; }

    如果省略“結果值1”則為其本身。 如 $res=100?:10; //結果 $res=100;

  位元運算符號

    符號: & | ~ ^ << >>

    僅僅針對於整數類型進行運算

    按位異或: 相同為0 不同為1. 如1^1 = 0;

    安慰左移運算<<: 右邊補0,左邊移出

    原碼,反碼,補碼:

      正數反碼:等於其本身; 負數的反碼:符號位不變,其它位取反;

      正數的補碼等於其本身; 負數的補碼:符號位不變,其它位取反再加1。

  數組運算子

    符號: +  ==  != === !==

    對於數組 + 號 : 數組聯合, 將右邊的數組項合并到左邊的數組的後面,得到一個新的數組。如果有重複的鍵,不覆蓋,保留左邊數組的資料。

    如: $arr = array(1=>11,2=>22,3=>33); $narr = array(3=>23,4=>24); $resArr = $arr +$narr; //結果:array(1=>11,2=>22,3=>33,4=>24)

    == : 鍵名和值相等則為真,順序可以不同。

  錯誤抑制運算子

    符號: @

    可以抑制可能產生的報錯資訊。如 $conn =@ mysql_connect(....);

  運算子優先順序參考手冊: 語言參考》運算子》運算子優先順序

流程式控制制

  繪製流程圖

  開始,結束: 用橢圓 表示

  語句塊: 長方形圖形

  判斷:帶指進和指出的四邊形

  輸入輸出: 四邊形

  分支結構

  if分支結構

1 if(條件1){2      分支1; 3 } else if(條件2){4 分支2;5 } ….. else{6 //else 分支 7 }

分支結構

  switch分支結構

1  switch(運算式) {2     case 值1: 分支1; 3         [break; ]  //可以省略4     case 值2: 分支2; 5         [break; ]  6         …….7     Default : default 分支;8 }9

switch結構

  迴圈結構

  1)for迴圈

    for(【迴圈變數初始化】; 【迴圈變數的條件判斷】; 【迴圈變數的改變】) { // 迴圈體語句…….}

  2) while()迴圈

    While(【迴圈變數的條件判斷】){ //迴圈體語句……. 【迴圈變數的改變】 }

  3) do..while()迴圈

    do { //迴圈體語句……. 【迴圈變數的改變】 }while(【迴圈變數的條件判斷】)

  4) foreach()迴圈

  5) goto語句

    不能跳入迴圈中,不能跳入函數中,不能跳出函數外,不能跳出檔案外

標識符2:    語句1。。。。。goto 標識符1;   //含義: 立即跳轉到標識符1所在的位置    語句。。。標識符1:    語句。。。。goto  標識符2;  //含義: 立即跳轉到標識符2所在的位置

  迴圈中斷

  1)break: 完全終止某個迴圈,讓執行流程進入到迴圈語句後面的語句;
2)continue: 停止當前進行中的當次迴圈,而進入到迴圈的“下一次”過程中去;

  3)中斷“更多層”的迴圈; 指的是從當前中斷語句(break 或continue)算起,往代碼的“外部”數迴圈的個數,就是層數

    break 正整數n; 如: break 1;
    continue 正整數n; 如: continue 2;

for(…) {     //迴圈1    for(..) {   //迴圈2         for(..) {   //迴圈3            break 2;    //此時會中斷迴圈2;  其實只中斷“2層”                    //對此break語句,迴圈3是其“第1層”,迴圈2是其“第2層”,迴圈1是其“第3層”               }                continue 2;    //此時會中斷迴圈1;  其實只中斷“2層”                   //對此continue語句,迴圈2是其“第1層”,迴圈1是其“第2層”         }}

  流程式控制制另外一種寫法

1 if(…):  ……     endif;2 if(…):  ……  else: ……  endif;3 if(…):  ……elseif(…):   ……elseif(…):   ……else:  ……   endif;4 switch(…):case  ……  case  ……  endSwitch;5 while(…): ……  endwhile;6 for(…;    … ; …):  ……  endfor;

  控制指令碼執行

    1) die('字串'); 輸出該字串後,立即停止PHP的執行!

    2) exit('字串'); 輸出該字串後,立即停止PHP的執行!

    3) sleep($num); 讓程式停止運行指定的秒數。等待過了$num秒後,繼續執行。

以上就是本文的全部內容,希望對大家的學習有所協助,更多相關內容請關注topic.alibabacloud.com!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.