前言
雖說已經作業,并且也做了兩個專案,但總覺得自己的基礎知識不牢固,所以從頭開始學起,學習程序中的一些代碼已上傳到 Github 和 碼云
基礎知識
認識 PHP
略,,,
安裝與配置
略,,,
語言基礎
標記風格
XML 風格
<?php
echo "這是 XML 風格";
?>
腳本風格
<script language="php">
echo "這是腳本風格";
</script>
簡短風格
<? echo "這是簡短風格"; ?>
ASP 風格
<%
echo "這是 ASP 風格";
%>
如果使用簡短風格和 ASP 風格,需要在 php.ini 中進行設定,將 short_open_tag 和 asp_tags 設定為 ON,重啟 Apache 服務器
推薦使用 XML 風格
注釋
單行注釋
- C++ 風格(//)
<?php
// 單行注釋
?>
- Shell 風格(#)
<?php
# Shell 風格的單行注釋
?>
多行注釋
<?php
/*
多行注釋
多行注釋
多行注釋
*/
?>
單行注釋中不允許出現 ?> PHP 結束標簽
多行注釋中不允許出現 */ 多行注釋結束標簽
資料型別
PHP 中資料型別可以分為三類:標量型別、復合型別、特殊型別
標量型別
布爾型別
布爾型別只有兩個值:真(true),假(false),通常使用在條件控制或回圈控制陳述句的條件運算式中
PHP 中可以自動轉換為假(false)的值:0, 0.0, "0", "", []
字串型別
字串就是連續出現的字符序列,PHP 支持四種定義字串的方式:單引號('),雙引號("),heredoc 語法結構,nowdoc 語法結構
- 單引號
<?php
echo '字串';
?>
- 雙引號
<?php
echo "字串";
?>
如果字串包含在雙引號(")中,可以對變數和一些特殊字符進行決議
| # | 含義 |
|---|---|
| \n | 換行(new line) |
| \r | 回車 |
| \t | 水平制表符 |
| \v | 垂直制表符 |
| \e | Escape |
| \f | 換頁 |
| \\ | 反斜線 |
| \$ | 美元符號 |
| \' | 單引號 |
| \" | 雙引號 |
| ... |
\r 和 \n 在 windows 中的對比效果不明顯,在 Linux 中,\n 表示換到下一行,但不會回到行首;而 \r 表示游標回到行首,但仍在本行
- heredoc 語法結構
<?php
<<<EOD
這是 heredoc 語法結構
EOD
?>
- nowdoc 語法結構
<?php
<<<'EOD'
這是 nowdoc 語法結構
EOD
?>
heredoc 和 nowdoc 語法結構和雙引號與單引號的關系類似,heredoc 可以決議上面列出的特殊字符,nowdoc 不可以,heredoc 語法結構和 nowdoc 語法結構的結束識別符號必須在行首,
整型
在 32 位作業系統中,有效的數值范圍的 -2147483648~2147483647(書上這么寫的),在 PHP7 (不要問我為什么是 PHP7,因為我用 PHP7 測驗的)中可以使用 PHP_INT_MAX 和 PHP_INT_MIN 來獲取范圍的最大最小值,整型可以使用十進制、二進制、八進制、十六進制來表示,使用八進制,需要在數字前面加上0,使用十六進制需要在數字前面加上0x,
- 十進制
<?php
echo 123; // 正數
echo -123; // 負數
?>
- 二進制
<?php
echo 0b10011;
?>
- 八進制
<?php
echo 0123;
?>
在八進制中,如果出現非法數字 8,9這些,程式會報錯(PHP7 中是這樣)
- 十六進制
<?php
echo 0x123;
?>
整數溢位
如果給定一個數超出了 integer 的范圍,會被解釋為 float,
不要將未知分數強制轉換為 integer
<?php
echo (int)( (0.1 + 0.7) * 10 ); // 結果是 7
?>
浮點型別
浮點型別默認有兩種格式,標準格式的科學記數法格式
<?php
$float = 3.1415;
$float2 = -23.3;
$float3 = 2.34E2;
echo pi(); // 圓周率
?>
浮點型數值只是一個近似值,要盡量避免浮點數比較大小
復合資料型別
陣列 array
陣列的定義:
<?php
$arr = array(
$key => $val,
...
);
// 或
$arr = [
$key => $val,
...
];
?>
陣列的取值:
<?php
echo $arr[$key];
?>
陣列 key 的強制轉換
- 包含合法的十進制整數值的字串會被轉換成整數值,例如 "3" 會轉換成 3,而 "03" 則不會轉換成 3
- 浮點數也會強制轉換為整型,方式為向下取整,例如 2.3 會轉換成 2
- 布林值中 true 會轉換為 1,false 轉換為 0
- Null 會轉換為空字串""
如果在陣列中定義了相同的鍵名,只使用最后一個
物件 object
類的實體,使用 new 關鍵字創建,
<?php
class Foo
{
protected $name = 'class';
public function show()
{
echo $this->name;
}
}
$obj = new Foo(); // 這是的 obj 就是一個物件,是從 Foo 這個類實體化來的
?>
特殊資料型別
資源型別 resource
手冊上解釋的是:它是保存了外部資源的一個參考,
NULL
表示一個變數沒有值,以下情況會被認為是 NULL
- 被賦值為 NULL
- 變數未賦值
- 被 unset()
資料型別轉換
| 轉換運算子 | 轉換型別 |
|---|---|
| (boolean) | 布爾型別 |
| (string) | 字串型別 |
| (integer)/(int) | 整型 |
| (float) | 浮點型 |
| (array) | 陣列 |
| (object) | 物件 |
| (unset) | NULL(PHP5) |
還可以使用 settype(mixd var, string type) : boolean 函式對型別進行轉換,第一個引數是要轉換的變數,第二個引數是要轉換的型別,支持:boolean, float, integer, array, null, object, string,轉換成功回傳 true,失敗回傳 false,
檢測資料型別
PHP 中內置了檢測資料型別的系列函式,判斷一個變數是否屬于某個型別,是的話回傳 true,不是回傳 false,
| 函式 | 檢測型別 |
|---|---|
| is_bool(mixed var) : boolean | 布爾 |
| is_string(mixed var) : boolean | 字串 |
| is_float(mixed var) : boolean/is_double(mixed var) : boolean | 浮點型 |
| is_integer(mixed var) : boolean/is_int(mixed var) : boolean | 整型 |
| is_null(mixed var) : boolean | NULL |
| is_array(mixed var) : boolean | 陣列 |
| is_object(mixed var) : boolean | 物件 |
| is_numeric(mixed var) : boolean | 數字或由數字組成的字串 |
PHP 常量
常量是一個簡單的識別符號,在腳本運行期間不允許改變,
常量的定義
使用 define() 函式,語法格式:
define(string constant_name, mixed value, boolean case_sensitive = false);
define() 函式說明:
| 引數 | 說明 |
|---|---|
| constant_name | 必須,常量名 |
| value | 必須,常量值 |
| case_sensitive | 可選,指定是否大小寫敏感,默認為 false,表示敏感 |
常量的取值
一是直接使用常量名取值,另一種是使用 constant() 函式取值,
判斷一個常量是否已經定義
使用 defined() 函式判斷一個常量是否已經定義,如果定義了則回傳 true,否則回傳 false,
PHP 中常用的預定義常量
| 常量名 | 功能 |
|---|---|
| __FILE__ | PHP 程式檔案名 |
| __LINE__ | 當前所在行 |
| PHP_VERSION | PHP 版本 |
| PHP_OS | 執行 PHP 決議器的作業系統 eg. WINNT |
| E_xxx | PHP 的錯誤除錯部分,參考 error_reporting() 函式 |
PHP 變數
變數是在程式執行程序中可以變化的量,用一個美元符號后面跟上變數名表示,區分大小寫,
變數聲名
變數名必須以字母或下劃線開頭,后面跟上數字、字母、下劃線,不能包含特殊符號,也不能以數字或其它特殊符號開頭,變數可以是中文,但不建議使用,
$this 是一個特殊的變數,不能被賦值
<?php
// 變數的宣告
$foo = 'variable';
$foo1 = 'var';
// $1_a = '1a'; // 變數名不合法
// $@abc = 'abc'; // 變數名不合法
$var = $foo; // 使用 $foo 給變數 $var 賦初值
$var2 = &$foo; // 參考賦值
$var2 = 'var2'; // 改變 $var2 的值
var_dump($foo); // $foo 的值也會改變
var_dump($var); // $var 的值還是 variable
?>
變數作用域
變數必須在有效的范圍內使用,超出變個范圍,變數就失去的意義,
全域變數不能被函式直接使用,如果要使用,必須在函式中宣告為 global
// 變數作用域
$a = 1;
function test()
{
echo $a; // 這里不會有任何輸出,呼叫的區域的變數 $a
var_dump($a); // 列印結果顯示 NULL
}
test();
// 全域變數在函式內部使用的時候,必須使用 global
$b = 2;
function test2()
{
global $b; // 宣告為 global
echo $b; // 結果為 2
}
test2();
// 使用 $GLOBALS 代替 global
$c = 3;
function test3()
{
$GLOBALS['c'] = 5; // 使用 $GLOBALS 代替 global
}
test3();
echo $c; // 顯示結果為 5
一般來說,在函式中宣告的變數,在函式運行結束時,就會自動被清除掉,使用靜態變數則會被保留,
// 靜態變數
function static_var()
{
static $d = 1;
echo $d++;
}
static_var(); // 顯示 1
static_var(); // 顯示 2
可變變數
用一個變數的值,作為另一個變數的變數名,
// 可變變數
$e = 'f'; // 變數值為 f
$$e = 'I am f'; // 相當于 $f = 'I am f';
echo $f;
預定義變數
// 預定義變數
dump($GLOBALS); // 全域作用域中全部變數
dump($_SERVER); // 服務器和執行環境資訊
dump($_GET); // HTTP GET 變數
dump($_POST); // HTTP POST 變數
dump($_FILES); // HTTP 檔案上傳變數
dump($_REQUEST); // HTTP REQUEST 變數
dump($_SESSION); // session 變數
dump($_COOKIE); // cookies
dump($_ENV); // 環境變數
dump($php_errormsg); // 前一個錯誤資訊
dump($HTTP_RAW_POST_DATA); // 原生 POST 資料
dump($http_response_header);// http 回應頭
function dump($var)
{
echo '<pre>';
print_r($var);
echo '</pre>';
}
運算子
運算子是可以通過給出的一個或多個值,得出另一個值的東西,
運算子優先級
從上到下,優先級降低,
| 運算子 | 結合方向 |
|---|---|
| clone, new | 無 |
| **[乘方運算子] | 右 |
| ++, --, ~[取反減1], (int), (float), ..., @ | 右 |
| instanceof | 無 |
| ! | 右 |
| *, /, % | 左 |
| +, -, . | 左 |
| <<, >> | 左 |
| <, <=, >, >= | 無 |
| ==, !=, ===, !==, <>[相當于是 !=], <=>[a <=> b,如果a > b,回傳1,相等回傳0,否則回傳-1] | 無 |
| &[按位與] | 左 |
| [1] | 左 |
| | | 左 |
| && | 左 |
| // | 左 |
| ?? | 右 |
按位異或 ??
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/56980.html
標籤:PHP
上一篇:PHP微信開發包,微信開發SDK
