目錄
Lession 01 php 基礎
1. php 基礎
phpinfo():輸出版本號
- echo:輸出文字
- php.ini:php的配置檔案
2. php 變數
命名變數必須用 $ 開頭
嚴格區分大小寫
不能以特殊字元和數字開頭(可以用下劃線)
unset:銷燬變數
isset():判斷變數是否存在
isset(var1, var2)
普通變數的作用域:函式
內部作用域
和外部作用域
是不相關的<?php // 變數的作用域 $test = 'hello'; function test () { echo $test; // 報錯, 變數未定義 } test();
2.1 靜態變數:
static
可以定義靜態變數- 只會初始化一次,會儲存上一次的值
<?php // 靜態變數 function total() { static $num = 2; $num *= 2; echo $num; } total(); total(); total();
2.2 超全域性變數:
- $GLOBALS:用於在 PHP 指令碼中的任意位置訪問全域性變數
- $_SERVER:儲存關於報頭、路徑和指令碼位置的資訊
- $_REQUEST:接收 HTML 表單提交的資料
- $_POST:接收 post 請求資料
- $_GET:接收 get 請求資料
- $_FILES:接收 檔案 資料
- $_ENV:是一個包含伺服器端環境變數的陣列
- $_COOKIE:獲取 請求所帶的 COOKIE
- $_SESSION:獲取 請求所帶的 SESSION
3. php 單引號 和 雙引號區別
單引號不識別變數,雙引號識別變數
單引號不會轉義特殊字元, 雙引號可以
<?php // 單雙引號區別 $name = '張三'; $age = 18; $sex = 'man'; echo "$name"; // 張三 echo '$name'; // $name // 結論:單引號不解析變數,雙引號解析變數 echo "\n"; // 換行 echo '\n'; // \n // 結論:單引號不會轉義特殊字元, 雙引號可以 ?>
- 變數和字串,用一個點
.
拼接起來
- 變數和字串,用一個點
雙引號可以將變數和字串拼接起來
"{$name}好好學習" -> "張三好好學習"
- 雙引號 套 單引號 套 變數,輸出外面帶單引號的變數
"'$name'" -> '張三'
- 雙引號 套 單引號 套 變數,輸出外面帶單引號的變數
單引號效率比雙引號高
4. 資料型別
1. 標量
1. 整型:1 2
2. 浮點型:1.2 1.3
3. 布林型別:true false
4. 字串:單雙引號引起來的都是字串
2. 混合型別(重點)
1. 陣列:array
2. 物件:object
3. 特殊型別
1. 空:null
2. 資源:resource
5. 資料型別轉換
- 檢測資料型別:gettype()
- 型別轉換
- intval():轉換為整數,integer
- floatval():轉換為小數,double
- strval():轉換為字串,string
- boolval():轉換為布林值,boolean
- 判斷資料型別的常用函式
- is_array()
- is_string()
- is_bool()
- is_float()
- is_object()
- is_int()
- is_numeric():數字字串會轉換成數字,然後再判斷,但不能混合非數字字元
- is_resource():判斷是否是資源
- is_null()
- is_scalar():判斷是否是標量
6. 常量
定義常量:
define('abc', 'abc');
常量注意點:
* 常量可以直接用大寫字母和下劃線定義,不必加`$`符號
賦值只能為標量
賦值只能為標量
* 常量不能寫到字串中
判斷常量是否被定義:
defined('常量名')
系統常量:
__FILE__
:找你的檔案__LINE__
:獲取程式碼所在的行數__DIR__
:找到當前檔案的目錄PHP_OS
:獲取系統資訊PHP_VERSION
:獲取版本資訊__FUNCTION
:獲取當前函式名M_PI
:圓周率瞭解:
__MHTHOD__
:獲取當前成員方法名__NAMESPACE__
:獲取當前名稱空間的名字__TRAIT__
:獲取當前 TRAIT 名字(多繼承)__CLASS__
:獲取當前類名
7. 運算子
與其他語言差不多
8. 為 false 的幾種情況(條件判斷)
- 字串和數字:
''
、0
、'0'
、0.000
- 字串
'0.000'
為真
- 陣列:
[]
(與 js 不同)
9. 流程判斷
與其他語言基本相同
擴充:
1. 隨機數:mt_rand(1, 10);
10. 迴圈
與其他語言一樣,迴圈內的變數不是區域性變數
11.1 函式
定義:function name() {}
1. 函式分為類庫函式 和 自定義函式
2. 類庫函式不可再自定義
3. 行參可設定預設值,與 es6 類似
4. 沒設定預設引數時,實參少了會報錯
5. 函式不區分大小寫
<?php
function Name($name = '劉程', $sex = '男') {
echo '我是:'.$name.' . 性別:'.$sex;
return true;
}
$temp = name('liucheng'); // 我是:liucheng . 性別:男
echo '<br />'.$temp; // 返回值 true
- 變數和作用域看標題2 變數
- 行參的型別約束(重要)
11.2 函式的 行參 和 返回值
11.2.1 行參約束型別
行參約束型別後,函式會將傳入的資料轉換為對應的資料,若無法轉換,將報錯。
<?php
// 約束函式行參的型別
function test(string $name, int $num) {
echo gettype($name).'<br />';
echo gettype($num).'<br />';
}
test('liucheng', 20);
test(520, 20);
// test(520, "a"); // 報錯, 'a' 不是整數
11.2.2 返回值的約束型別
變數括號後面加一個 `:string` , 約束其返回值為 string ,不是 string 就會報錯
<?php
// 約束函式返回值
function test(string $name, int $num):string {
return $name.$num;
}
print_r(test('liucheng', 20).'<br>');
print_r(test(520, 20).'<br>');
echo test(520, "a").'<br>';
11.2.3 函式的可變引數
不用設定行參,即可獲取傳入的引數
func_get_args()
: 獲取傳入的引數,組成陣列。func_get_arg(n)
: 獲取對應下標位置的引數
<?php
// 可變引數
function test() {
$temp = func_get_args();
echo func_get_arg(1).'<br>';
return $temp;
}
print_r(test('liucheng', 20)); // 輸出:Array ( [0] => liucheng [1] => 20 )
12. 常用函式
12.1 數學函式
- 隨機數
- rand
- mt_rand:效能比 rand 好 4 倍
- 小數
- floor:向下取整
- ceil:向上取整
- round:四捨五入取整
- 其他
- abs:絕對值
- pi:圓周率
- M_PI:常量, 與 pi() 函式返回值相同
- pow:指數表示式
- max:最大值
- min:最小值
12.2 字串內建函式
- 大小寫轉換
- strtolower:大寫轉小寫
- strtoupper:小寫轉大寫
- lcfirst:首字母小寫
- ucfirst:首字母大寫
- ucwords:每個單詞首字母大寫
- 空白處理
- trim:去掉首位空格
- ltrim:去掉頭部空格
- rtrim / chop:去掉尾部空格
- 查詢定位
- strstr / strchr:檢測 字串 在 另一個字串 第一次出現到結尾的內容(大小寫敏感)
- strrchr:檢測 字串 在 另一個字串 最後一次出現 到 結尾 的內容
- stristr:strstr 忽略大小寫版本
- strpos:返回字串首次出現的位置(大小寫敏感)
- stripos:strpos 忽略大小寫版本
- strrpos:返回字串最後一次出現的位置(大小寫敏感)
- strripos:strrpos 忽略大小寫版本
- sbustr:子字串提取
- strpbrk:返回 (搜尋條件的任意字元) 首次出現到結尾的內容(大小寫敏感)
- 比較
- strcmp:二進位制比較字串
- strcasecmp:strcmp 忽略大小寫比較
- strnatcmp:使用一種"自然排序"演算法來比較兩個字串(對大小寫敏感),在自然演算法中,數字 2 小於數字 10。在計算機排序中,10 小於 2,這是因為 10 中的第一個數字小於 2。
- strnatcasecmp:strnatcmp:忽略大小寫版本
順序
- str_shuffle:隨機打亂字串順序
- strrev:倒序排列字串
轉換
- chr:將 ASCII 碼值轉換為字元
未完待續。。。