第二階段:核心編程 - PHP基礎語法

menu:

一、php基礎語法

    1. PHP語法規則
    1. PHP標記
    1. 注釋

二、變量及操作

    1. 概念
    1. 聲明變量
    1. 修改變量的值
    1. 刪除變量
    1. 可變變量

三、預定義變量

四、內存原理(形象理解)

    1. 內存結構
    1. php的執行過程
    1. php嵌入到HTML的執行
    1. php變量中的傳遞方式

五、常量

    1. 概念
    1. 定義
    1. 常量的判斷及獲取所有常量
    1. 魔術常量

六、php的數據類型

    1. 數據類型的分類
    1. 整數型 int
    1. 浮點型 float
    1. 字符串 string
    1. 布爾型 Bool
    1. 數組 Array
    1. 數組 null類型
    1. 資源類型

php基礎語法 > 第二天視頻 > 02php語法規則

一、PHP基本語法
  • PHP 是一種創建動態交互性站點的強有力的服務器端腳本語言;
  • PHP原始為Personal Home Page的縮寫, 現在已經正式更名為:Hypertext Preprocessor,中文名:“超文本預處理器”);
  1. PHP語法規則

    • 如果文檔后綴名是.htm,那即使文檔里有php代碼也不會交給php解析處理。只有后綴名是.php的文檔才會交給PHP處理,然后php交還給Apache,Apache再交給browser顯示;
    • php每一條語句后必須有;分號;
    • php中的變量名規則與python相同,方法、函數和類名最好遵照python規則;
  2. PHP標記

    • php開始至今存在四種標簽;
    • 標準格式(xml) <?php ... ?>
    • script格式


      script格式標記
    • 短格式 <? ... ?> 默認未開啟,需要在php文件夾 - php.ini里配置開啟;
    • asp格式 <% ... %> 默認未開啟,需要在php文件夾 - php.ini里配置開啟;
  3. 注釋

    • 單行注釋 // 注釋內容
    • 多行注釋 /* 多行注釋 */
<?php
/**
 * Created by PhpStorm.
 * User: JLP
 * Date: 2019/3/18
 * Time: 10:48
 */
?>

二、變量及操作
  • 程序語言就是對內存進行操作(對內存進行讀寫操作)
  1. 概念

    • 變量是內存中臨時存儲數據的一個空間,這個空間的名字就叫做變量名,變量名是用于對這個內存中的數據進行引用的;
  2. 聲明變量

    • php中的變量必須以“$”開頭,變量名只能包含字母、數字、下劃線,且只能以字母或下劃線開頭;
    • $variable = value
$a = 10;
$b = 5;
$result = $a + $b;
echo $result;   // 15
  1. 修改變量的值
    • 重新賦值即可;
$name = "Bob";
$name = "Ham";
echo $name;   // Ham
  1. 刪除變量
    • 語法:unset($variable);
$name = "Bob";
unset($name);
echo $name;   //  Undefined variable: name 
  1. 可變變量
    • 先解析item為age,然后解析age就能得到17;
$item = "age";
$age = 17;   // 先解析$item為age,然后解析$age就能得到17
echo $$item  // 17

$item = "age";
$$item = 17;   // 為動態變量賦值;
echo $age  // 17

三、 預定義變量
  • php為我們預先定義了一組變量,這些變量會在不同的需求中使用。
    • $_GET 用于接收前臺表單使用GET方式提交得數據;
    • $_POST 用于接收前臺表單使用POST方式提交得數據;
    • $_REQUEST 用于接收前臺表單使用GET 或 POST方式提交得數據;
    • $_SERVER 記錄服務器端與客戶端得相關信息;
    • $_COOKIE 一種會話技術;
    • $_SESSION 一種會話技術;
    • $_FILES 用于記錄用戶上傳的文件信息;
    • $_GLOBAL 用于記錄全局變量

四、 內存原理(形象理解)
  1. 內存結構


    內存結構
    • 棧區
      • 保存的是變量名(術語叫引用)。對于cpu來說,讀寫速度是最快的。
    • 堆區
      • 存儲的是“復雜”的數據:數組、對象;
    • 數據段
      • 存儲的是簡單的數據:整數型、浮點型
    • 代碼段
      • 存儲的是源代碼對應的機器指令。(代碼轉換成的機器指令)
    • 輸出緩存
      • 只要遇到輸出命令,例如:echo、print、print_r、var_dump,這些指令都會將所要輸出的數據放在 輸出緩沖 中。
  2. php的執行過程

      1. 編譯階段
      • 進行語法檢查、詞法檢查、代碼優化;
      • 編譯通過后將源代碼轉換成機器指令;
      • 編譯階段錯誤的提示信息;
      1. 執行階段
      • 如果編譯通過后,會將源代碼對應的機器指令保存在代碼段,再開始執行代碼段中的機器指令;
      • 1、編譯階段
      • 1.1、語法檢查、詞法檢查、代碼優化,然后在代碼段生成機器指令;
      • 2、執行階段
      • 2.1、執行代碼段中的代碼
      • 2.2、編譯階段


        圖片.png
  3. php嵌入到HTML的執行

    • 當php功能模塊在處理一個php文件時,它只關心php代碼(使用php標簽包含的代碼)。對于非php代碼,它會原樣輸出;


      圖片.png
  4. php變量中的傳遞方式

    • 在php中變量有兩種傳遞方式:
      1. 賦值傳值:
        • 使用一個變量a為另一個變量b賦值時,傳遞的事變量a的值,這種賦值方就是賦值傳值


          賦值傳值
      2. 引用傳值:
        • 利用&符號來把賦值傳值改變為引用傳值。
        • 使用一個變量a為另一個b賦值時,傳遞的事變量a的地址,這種賦值方式就是引用傳值;
        • 相當于python的可變數據類型;


          引用傳值

五、常量
  1. 概念:

    • 常量就是一種特殊的變量,也是用于存儲數據。常量一旦定義就不允許修改其值,常量本身也不允許刪除。
  2. 定義

    • 語法:
        1. difine("const_name", value)
        1. const const_name = value
    • 說明:
        1. 常量一旦定義就不允許修改
        1. 常量的值只能是基本的數據類型(標量數據類型)
        1. 常量在命名時一般使用全大寫形式,常量前面不需要加$符號;
    • define 和 const 的區別:
        1. define語法可以在分支結構中(if)定義常量,const不允許;
        1. define("PI", 3.14, true) // 如果函數內第3個參數為“true”,使用常量的時候可以不區分大小寫;
    if(true){
        // 分支結構里只能用define
        define("PI", 3.14);  // 正確
        const PI = 3.14;     // 不正確
    }
        define("PI", 3.1415);   // 常量定義語法1;
        print(PI);    // 3.1415
        PI = 10;  // 常量不期待“=”Parse error: syntax error, unexpected '='
        const name = "Bob"; // 常量定義語法2;
    1. 常量的判斷及獲取所有常量
    • 判斷常量是否存在 : 利用defined函數
    • 獲取php的所有常量: 用get_defined_constants函數;
//判斷常量是否存在
const NAME = "Bob";  // 定義常量;
$result = defined("NAME");   // 判斷常量是否存在;
var_dump($result)   // 函數用于輸出變量的相關信息。 輸出為:bool(true)
// 獲取php的所有常量
$result = get_defined_constants();  // 查看php所有的常量
echo "<pre>";  // <pre> 標簽的一個常見應用就是用來表示計算機的源代碼。
print_r($result)   // 打印結果
//  單獨獲取PHP常量;
echo  "PHP_VERSION = ", PHP_VERSION, "<br/>";   // 5.6.30
echo "PHP_OS = ", PHP_OS, "<br/>";   // WINNT
echo "PHP_INT_MAX = ", PHP_INT_MAX, "<br/>";   //2147483647
  1. 魔術常量
    • php中定義了一組魔術常量;
echo __FILE__, "<br/>";  // 獲取當前文件路徑和文件名;
echo __DIR__, "<br/>";   // 獲取當前的文件名;
echo __LINE__, "<br/>";  // 獲取當前的行號;
echo __METHOD__, "<br/>";   // 獲取當前方法的方法名;
echo __CLASS__, "<br/>";   // 獲取當前類的類名;
echo __NAMESPACE__, "<br/>";   // 獲取當前命名空間的空間名;
echo __FUNCTION__, "<br/>";  // 獲取當前函數的函數名;

// 實例:顯示當前函數的函數名;
function showInfo(){
    echo "function name is: ", __FUNCTION__, "<br>";
}
showInfo();

六、php的數據類型

  1. 數據類型的分類

    • php數據類型分3大類 8小類:
        1. 標量(scalar)數據類型;
        • int 整數型 int 和 float 統一歸類為Number
        • float 浮點型
        • boolean 布爾型
        • string 字符串
        1. 復合數據類型;
        • Array 數組
        • Object 對象
        1. 特殊數據類型;
        • null null
        • resource 資源類型
  2. 整數型 int

    • 線性的整數
      • 十進制
        • $v = 255;
      • 八進制
        • 以0開頭,且不能有超過7的數字;
      • 十六進制
        • 以0x開頭,包含0-9 a-f
// 十進制
$v1 = 255;
echo $v1, "<br/>";   // 255
// 八進制
$v2 = 076;
echo $v2, "<br/>";   // 62
// 十六進制
$v3 = 0xFF;
echo $v3, "<br/>";  // 255
  1. 浮點型 float
    • 帶有小數點的數都是浮點類型;
    • 小數點有兩種表示方式:
        1. 普通方式
        • $v = 3.6;
        1. 科學計數法
        • $v = 12.345E-2; // 0.12345
// 不能隨意得對兩個小數進行比較;
if(0.9-0.3==0.6){
    echo("true");
}else{
    echo("false");    // false 
}
  1. 字符串 string
    • 字符串就是單引號 或 雙引號括起來得字符。
      1. 使用單引號定義得字符串;
      • 單引號字符串里能轉義的字符有 “ //, /' ”
      1. 使用雙引號定義得字符串;
      • 雙引號字符串里所有轉義符都能被轉義;
      1. heredoc
      • 第三種表達字符串的方法是用 heredoc 句法結構:<<<。在該運算符之后要提供一個標識符,然后換行。接下來是字符串 string 本身,最后要用前面定義的標識符作為結束標志
// heredoc
$bar = <<<EOT
里面可包含大段字符串 不需要考慮單雙引號。
EOT;
  1. 布爾型 Bool
  2. 數組 Array
  3. 數組 null類型
  4. 資源類型

// heredoc
$bar = <<<EOT
里面可包含大段字符串 不需要考慮單雙引號。
EOT;
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,488評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,034評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,327評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,554評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,337評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,883評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,975評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,114評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,625評論 1 332
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,555評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,737評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,244評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,973評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,615評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,343評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,699評論 2 370

推薦閱讀更多精彩內容