menu:
一、php基礎語法
- PHP語法規則
- PHP標記
- 注釋
二、變量及操作
- 概念
- 聲明變量
- 修改變量的值
- 刪除變量
- 可變變量
三、預定義變量
四、內存原理(形象理解)
- 內存結構
- php的執行過程
- php嵌入到HTML的執行
- php變量中的傳遞方式
五、常量
- 概念
- 定義
- 常量的判斷及獲取所有常量
- 魔術常量
六、php的數據類型
- 數據類型的分類
- 整數型 int
- 浮點型 float
- 字符串 string
- 布爾型 Bool
- 數組 Array
- 數組 null類型
- 資源類型
php基礎語法 > 第二天視頻 > 02php語法規則
一、PHP基本語法
- PHP 是一種創建動態交互性站點的強有力的服務器端腳本語言;
- PHP原始為Personal Home Page的縮寫, 現在已經正式更名為:Hypertext Preprocessor,中文名:“超文本預處理器”);
-
PHP語法規則
- 如果文檔后綴名是.htm,那即使文檔里有php代碼也不會交給php解析處理。只有后綴名是.php的文檔才會交給PHP處理,然后php交還給Apache,Apache再交給browser顯示;
- php每一條語句后必須有;分號;
- php中的變量名規則與python相同,方法、函數和類名最好遵照python規則;
-
PHP標記
- php開始至今存在四種標簽;
- 標準格式(xml) <?php ... ?>
-
script格式
script格式標記 - 短格式 <? ... ?> 默認未開啟,需要在php文件夾 - php.ini里配置開啟;
- asp格式 <% ... %> 默認未開啟,需要在php文件夾 - php.ini里配置開啟;
-
注釋
- 單行注釋 // 注釋內容
- 多行注釋 /* 多行注釋 */
<?php
/**
* Created by PhpStorm.
* User: JLP
* Date: 2019/3/18
* Time: 10:48
*/
?>
二、變量及操作
- 程序語言就是對內存進行操作(對內存進行讀寫操作)
-
概念
- 變量是內存中臨時存儲數據的一個空間,這個空間的名字就叫做變量名,變量名是用于對這個內存中的數據進行引用的;
-
聲明變量
- php中的變量必須以“$”開頭,變量名只能包含字母、數字、下劃線,且只能以字母或下劃線開頭;
- $variable = value
$a = 10;
$b = 5;
$result = $a + $b;
echo $result; // 15
- 修改變量的值
- 重新賦值即可;
$name = "Bob";
$name = "Ham";
echo $name; // Ham
- 刪除變量
- 語法:unset($variable);
$name = "Bob";
unset($name);
echo $name; // Undefined variable: name
- 可變變量
- 先解析
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 用于記錄全局變量
四、 內存原理(形象理解)
-
內存結構
內存結構- 棧區
- 保存的是變量名(術語叫引用)。對于cpu來說,讀寫速度是最快的。
- 堆區
- 存儲的是“復雜”的數據:數組、對象;
- 數據段
- 存儲的是簡單的數據:整數型、浮點型
- 代碼段
- 存儲的是源代碼對應的機器指令。(代碼轉換成的機器指令)
- 輸出緩存
- 只要遇到輸出命令,例如:echo、print、print_r、var_dump,這些指令都會將所要輸出的數據放在 輸出緩沖 中。
- 棧區
-
php的執行過程
-
- 編譯階段
- 進行語法檢查、詞法檢查、代碼優化;
- 編譯通過后將源代碼轉換成機器指令;
- 編譯階段錯誤的提示信息;
-
- 執行階段
- 如果編譯通過后,會將源代碼對應的機器指令保存在代碼段,再開始執行代碼段中的機器指令;
- 1、編譯階段
- 1.1、語法檢查、詞法檢查、代碼優化,然后在代碼段生成機器指令;
- 2、執行階段
- 2.1、執行代碼段中的代碼
-
2.2、編譯階段
圖片.png
-
-
php嵌入到HTML的執行
-
當php功能模塊在處理一個php文件時,它只關心php代碼(使用php標簽包含的代碼)。對于非php代碼,它會原樣輸出;
圖片.png
-
-
php變量中的傳遞方式
- 在php中變量有兩種傳遞方式:
- 賦值傳值:
-
使用一個變量a為另一個變量b賦值時,傳遞的事變量a的值,這種賦值方就是賦值傳值
賦值傳值
-
- 引用傳值:
- 利用&符號來把賦值傳值改變為引用傳值。
- 使用一個變量a為另一個b賦值時,傳遞的事變量a的地址,這種賦值方式就是引用傳值;
-
相當于python的可變數據類型;
引用傳值
- 賦值傳值:
- 在php中變量有兩種傳遞方式:
五、常量
-
概念:
- 常量就是一種特殊的變量,也是用于存儲數據。常量一旦定義就不允許修改其值,常量本身也不允許刪除。
-
定義
- 語法:
- difine("const_name", value)
- const const_name = value
- 說明:
- 常量一旦定義就不允許修改
- 常量的值只能是基本的數據類型(標量數據類型)
- 常量在命名時一般使用全大寫形式,常量前面不需要加$符號;
- define 和 const 的區別:
- define語法可以在分支結構中(if)定義常量,const不允許;
- 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;
-
- 常量的判斷及獲取所有常量
- 判斷常量是否存在 : 利用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
- 魔術常量
- 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的數據類型
-
數據類型的分類
- php數據類型分3大類 8小類:
-
- 標量(scalar)數據類型;
- int 整數型 int 和 float 統一歸類為Number
- float 浮點型
- boolean 布爾型
- string 字符串
-
- 復合數據類型;
- Array 數組
- Object 對象
-
- 特殊數據類型;
- null null
- resource 資源類型
-
- php數據類型分3大類 8小類:
-
整數型 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
- 浮點型 float
- 帶有小數點的數都是浮點類型;
- 小數點有兩種表示方式:
-
- 普通方式
- $v = 3.6;
-
- 科學計數法
- $v = 12.345E-2; // 0.12345
-
// 不能隨意得對兩個小數進行比較;
if(0.9-0.3==0.6){
echo("true");
}else{
echo("false"); // false
}
- 字符串 string
- 字符串就是單引號 或 雙引號括起來得字符。
-
- 使用單引號定義得字符串;
- 單引號字符串里能轉義的字符有 “ //, /' ”
-
- 使用雙引號定義得字符串;
- 雙引號字符串里所有轉義符都能被轉義;
-
- heredoc
- 第三種表達字符串的方法是用 heredoc 句法結構:<<<。在該運算符之后要提供一個標識符,然后換行。接下來是字符串 string 本身,最后要用前面定義的標識符作為結束標志
// heredoc
$bar = <<<EOT
里面可包含大段字符串 不需要考慮單雙引號。
EOT;
- 布爾型 Bool
- 數組 Array
- 數組 null類型
- 資源類型
// heredoc
$bar = <<<EOT
里面可包含大段字符串 不需要考慮單雙引號。
EOT;