主要參考:
https://www.runoob.com/php/php-intro.html 菜鳥教程
https://www.w3school.com.cn/ W3school
1、php定義
PHP(全稱:PHP:Hypertext Preprocessor,即"PHP:超文本預處理器")是一種通用開源腳本語言。
注意:php不是拍黃片,不是編程語言,它是一門弱類型的腳本語言。
2、php能做什么?
A、PHP 可以生成動態(tài)頁面內(nèi)容
B、PHP 可以創(chuàng)建、打開、讀取、寫入、關(guān)閉服務器上的文件
C、PHP 可以收集表單數(shù)據(jù)
D、PHP 可以發(fā)送和接收 cookies
E、PHP 可以添加、刪除、修改您的數(shù)據(jù)庫中的數(shù)據(jù)
F、PHP 可以限制用戶訪問您的網(wǎng)站上的一些頁面
G、PHP 可以加密數(shù)據(jù)
3、安裝 - 集成環(huán)境與編輯器
推薦phpstudy + phpstorm
Phpstudy:https://jingyan.baidu.com/article/335530dafae53519ca41c37a.html 百度經(jīng)驗
Phpstorm:https://www.jetbrains.com/ 官網(wǎng)下載
編輯器也有大神喜歡用sublime Text 或者 notepad 甚至記事本的。。。
Sublime Text :https://www.sublimetext.com/ sublime 官網(wǎng)
Notepad:https://notepad-plus-plus.org/ notepad 官網(wǎng)
其它的集成環(huán)境,例如phpenv。
phpenv:https://www.phpenv.cn/
php內(nèi)置Web服務器:
參考文檔:https://blog.csdn.net/ltx06/article/details/78933441
命令:php -S localhost:8000
在laravel框架中的內(nèi)置服務器:php artisan serve
注意:php5.4及以上的內(nèi)置服務器不應該用于生產(chǎn)環(huán)境,但對于本地開發(fā)來說是個極好的工具。它不需要Apache或Nginx代理就能預覽php應用。
4、語法與變量
PHP 腳本在服務器上執(zhí)行,然后將純 HTML 結(jié)果發(fā)送回瀏覽器。
PHP 腳本可以放在文檔中的任何位置。
PHP 腳本以 <?php 開始,以 ?> 結(jié)束。
PHP 中的每個代碼行都必須以分號結(jié)束。分號是一種分隔符,用于把指令集區(qū)分開來。
通過 PHP,有兩種在瀏覽器輸出文本的基礎指令:echo 和 print。
注意:echo - 可以輸出一個或多個字符串
print - 只允許輸出一個字符串,返回值總為 1
EOF - PHP 定界符 EOF 的作用就是按照原樣,包括換行格式什么的,輸出在其內(nèi)部的東西。且可以識別變量。
變量是用于存儲信息的"容器"。
變量規(guī)則:
A、變量以 $ 符號開始,后面跟著變量的名稱
B、變量名必須以字母或者下劃線字符開始
C、變量名只能包含字母數(shù)字字符以及下劃線(A-z、0-9 和 _ )
D、變量名不能包含空格
E、變量名是區(qū)分大小寫的($y 和 $Y 是兩個不同的變量)
PHP是一門弱類型語言,因此不必聲明變量的數(shù)據(jù)類型。PHP 會根據(jù)變量的值,自動把變量轉(zhuǎn)換為正確的數(shù)據(jù)類型。在強類型的編程語言中,我們必須在使用變量前先聲明(定義)變量的類型和名稱。
PHP變量的作用域:local (局部);global (全局);static (靜態(tài));parameter (參數(shù))
超級全局變量:PHP 4.1.0之后被啟用, 是PHP系統(tǒng)中自帶的變量,在一個腳本的全部作用域中都可用。它也是全局變量的一種。
超級全局變量主要有:
$GLOBALS
$_SERVER
保存關(guān)于報頭、路徑和腳本位置的信息
$_REQUEST
用于收集 HTML 表單提交的數(shù)據(jù)。可以理解$_POST和$_GET 是它的子集。
$_POST
被廣泛應用于收集表單數(shù)據(jù),在HTML form標簽的指定該屬性:"method="post"。
注意:默認情況下,POST 方法的發(fā)送信息的量最大值為 8 MB(可通過設置 php.ini 文件中的 post_max_size 進行更改)。
$_GET
被廣泛應用于收集表單數(shù)據(jù),在HTML form標簽的指定該屬性:"method="get"。所有的變量名和值都會顯示在 URL 中。
注意:HTTP GET 方法不適合大型的變量值。它的值是不能超過 2000 個字符的。
$_FILES
$_ENV
$_COOKIE
$_SESSION
5、數(shù)據(jù)類型
基本類型:
String(字符串)
Integer(整型)
有二進制、八進制、十進制、十六進制等幾種方法來表示整數(shù),前面可以正號(+)負號(-)
Float(浮點型),也稱作double
Float、Double、Real都是浮點型
Boolean(布爾型)
布爾類型只有兩個值,常量 TRUE 或 FALSE。兩個都不區(qū)分大小寫。
Array(數(shù)組)
PHP里的數(shù)組,相當于其它語言里的數(shù)組、列表、字典、集合、棧、隊列。
數(shù)組有一維數(shù)組,二維數(shù)組,多維數(shù)組。
Object(對象)
有實例化的類都是對象。is_object可以判斷一個變量是否是Object 對象,也可以用 (object)來強制轉(zhuǎn)成對象。
NULL(空值)
Callable / Callback(可調(diào)用)(回調(diào)類型)
Resource(資源類型)
資源 resource 是一種特殊變量,保存了到外部資源的一個引用,比如打開文件、連接數(shù)據(jù)庫、請求網(wǎng)絡等。
偽類型:
mixed(混合類型)
mixed 說明一個參數(shù)可以接受多種不同的(但不一定是所有的)類型。
number(數(shù)字類型)
number 說明一個參數(shù)可以是 integer 或者 float
callback(回調(diào)類型,又稱為 callable)
array|object(數(shù)組 | 對象類型)
void (無類型)
PHP 7的新特性: 標量類型與返回值類型聲明
PHP類型的比較:
松散比較:使用兩個等號 == 比較,只比較值,不比較類型。
嚴格比較:用三個等號 === 比較,除了比較值,也比較類型。
6、常量
常量是單個值的標識符(名稱)。在腳本中無法改變該值。
有效的常量名以字符或下劃線開頭(常量名稱前面沒有 $ 符號)。
注釋:與變量不同,常量貫穿整個腳本是自動全局的。
設置常量使用函數(shù) define(), 首個參數(shù)定義常量的名稱,第二個參數(shù)定義常量的值,可選的第三個參數(shù)規(guī)定常量名是否對大小寫不敏感。默認是 false。
魔術(shù)常量:
PHP 向它運行的任何腳本提供了大量的預定義常量。
不過很多常量都是由不同的擴展庫定義的,只有在加載了這些擴展庫時才會出現(xiàn),或者動態(tài)加載后,或者在編譯時已經(jīng)包括進去了。
有八個魔術(shù)常量它們的值隨著它們在代碼中的位置改變而改變:
__LINE__ 文件中的當前行號。
__FILE__ 文件的完整路徑和文件名。如果用在被包含文件中,則返回被包含的文件名。
__DIR__ 文件所在的目錄。如果用在被包括文件中,則返回被包括的文件所在的目錄。
__FUNCTION__自 PHP 5 起本常量返回該函數(shù)被定義時的名字(區(qū)分大小寫)
__CLASS__ 自 PHP 5 起本常量返回該類被定義時的名字(區(qū)分大小寫)
__TRAIT__
__METHOD__ 返回該方法被定義時的名字(區(qū)分大小寫)。
__NAMESPACE__ 當前命名空間的名稱(區(qū)分大小寫)
Php 7新特性:常量數(shù)組 define() 可以代替const 直接定義常量數(shù)組。
例如:define(‘sites’,[‘web’ , ’name’ , ‘php’]);
7、運算符
A、算數(shù)運算符
B、賦值運算符
C、字符串運算符
D、遞增/遞減運算符
E、比較運算符
F、邏輯運算符
G、數(shù)組運算符
Php 7 新特性:NULL合并運算符
PHP 7 新增加的 NULL 合并運算符(??)是用于執(zhí)行isset()檢測的三元運算的快捷方式。
NULL 合并運算符會判斷變量是否存在且值不為NULL,如果是,它就會返回自身的值,否則返回它的第二個操作數(shù)。
例如:$site = isset($_GET['site']) ? $_GET['site'] : 'PHP開發(fā)';
上述代碼就可以改寫為:$site = $_GET['site'] ?? 'PHP開發(fā)';
8、條件語句
if 語句 - 在條件成立時執(zhí)行代碼
if...else 語句 - 在條件成立時執(zhí)行一塊代碼,條件不成立時執(zhí)行另一塊代碼
if...elseif....else 語句 - 在若干條件之一成立時執(zhí)行一個代碼塊
switch 語句 - 在若干條件之一成立時執(zhí)行一個代碼塊
9、循環(huán)語句
while - 只要指定條件為真,則循環(huán)代碼塊
do...while - 先執(zhí)行一次代碼塊,然后只要指定條件為真則重復循環(huán)
for - 循環(huán)代碼塊指定次數(shù)
foreach - 遍歷數(shù)組中的每個元素并循環(huán)代碼塊
10、函數(shù)及常用函數(shù)
參考:https://blog.csdn.net/alashan007/article/details/78216498
數(shù)學函數(shù)
l abs 求絕對值
l ceil 進一法取整
l floor 舍去法取整
l fmod 浮點數(shù)取余
l pow($a, $n) 返回$a的$n次方
l round 浮點數(shù)四舍五入
l sqrt 求平方根
l max 求最大值
l min 求最小值
l Rand($min,$max) 隨機數(shù)
l Mt_rand($min,$max) 更好的隨機數(shù)
l Pi 獲取圓周率的值
字符串操作
l Trim 刪除字符串兩端的空格或其他預定義字符
l Str_pad($str,$len,$v) 把字符串$str用$v 填充到指定長度$len
l Str_repeat($str,$len) 重復$len次使用指定字符串$str
l Str_split($str) 把字符串分割到數(shù)組中
l Strrev() 字符串反轉(zhuǎn)
l Str_shuffle 隨機地打亂字符串中的所有字符
l Strtolower 字符串轉(zhuǎn)為小寫
l Strtoupper 字符串轉(zhuǎn)為大寫
l Ucfirst 字符串首字母大寫
l Ucwords 字符串每個單子首字符轉(zhuǎn)為大寫
l Chunk_split 將字符串分成小塊
l Strtok($str,$token) 切開字符串$str
l Explode()
調(diào)用: array explode(str $sep,str $str[,int $limit])
輸入: $sep為分割符,$str目標字符串,$limit返回數(shù)組最多包含元素數(shù) 輸出: 字符串被分割后形成的數(shù)組
l Implode()
調(diào)用: string implode ( string $glue , array $pieces )
$glue默認, 用''則直接相連
l Substr($str, $start, $len) 截取字符串
l Str_replace() 字符串替換操作,區(qū)分大小寫
調(diào)用mix str_replace(mix $search,mix $replace, mix $subject[,int &$num])
輸入: $search查找的字符串,$replace替換的字符串,$subject被查找字串, &$num 輸出: 返回替換后的結(jié)果
l Str_ireplace() 字符串替換操作,不區(qū)分大小寫
l Substr_count() 統(tǒng)計一個字符串,在另一個字符串中出現(xiàn)次數(shù)
l Substr_replace() 替換字符串中某串為另一個字符串
調(diào)用: mixed substr_replace ( mixed $string, string $replacement,int $start [, int $length ] )
l Similar_text($str1, $str2) 返回兩字符串相同字符的數(shù)量
l Strrchr() 返回一個字符串在另一個字符串中最后一次出現(xiàn)位置開始到末尾的字符串
l Strstr() 返回一個字符串在另一個字符串中開始位置到結(jié)束的字符串
l Strtr() 轉(zhuǎn)換字符串中的某些字符
l Strpos() 尋找字符串中某字符最先出現(xiàn)的位置
l Strrpos() 尋找某字符串中某字符最后出現(xiàn)的位置
l Str_word_count() 統(tǒng)計字符串含有的單詞數(shù)
l Strlen($str) 統(tǒng)計字符串長度
l Md5() 字符串md5編碼
l Strcasecmp() 不區(qū)分大小寫比較兩字符串
l Strcmp() 區(qū)分大小寫比較兩字符串
html標簽關(guān)聯(lián)
l Htmlentities() 把字符串轉(zhuǎn)為html實體
l Htmlspecialchars() 預定義字符轉(zhuǎn)html編碼
l nl2br() n轉(zhuǎn)義為<br>標簽
l Strip_tags() 剝?nèi)TML、XML以及PHP的標簽
l Addcslashes() 在指定的字符前添加反斜線轉(zhuǎn)義字符串中字符 -- addslashes
l Stripcslashes() 刪除由addcslashes() 添加的反斜線 -- stripslashes
l Chr() 從指定的 ASCII 值返回字符
l Ord() 返回字符串第一個字符的ASCII值
時間函數(shù)
l time(): 返回當前的 Unix 時間戳
調(diào)用: int time ( void ) 輸出: 返回自從 Unix 紀元(格林威治時間 1970 年 1 月 1 日 00:00:00)到當前時間的秒數(shù)
l Mktime() 取得一個日期的 Unix 時間戳
l checkdate(): 驗證一個格里高里日期
l date_default_timezone_set(): 設定用于一個腳本中所有日期時間函數(shù)的默認時區(qū)
l getdate(): 取得日期/時間信息
l strtotime(): 將任何英文文本的日期時間描述解析為 Unix 時間戳
l microtime(): 返回當前 Unix 時間戳和微秒數(shù)
其它常用函數(shù)
l intval(): 獲取變量的整數(shù)值
11、數(shù)組、常用數(shù)組函數(shù)及數(shù)組排序
l Array() 生成一個數(shù)組
l Array_combine($a,$a2) 生成一個數(shù)組,用一個數(shù)組$a的值 作為鍵名,另一個數(shù)組$a2值作為值
l Range() 創(chuàng)建并返回一個包含指定范圍的元素的數(shù)組
l Compact() 創(chuàng)建一個由參數(shù)所帶變量組成的數(shù)組
l Array_fill($start_index, $len, $value) 用給定的填充(值生成)數(shù)組
l Array_chunk($arr, $num) 把一個數(shù)組分割為新的數(shù)組塊
l Array_merge() 把兩個或多個數(shù)組合并為一個數(shù)組
l Array_slice($arr, $offset, $len) 在數(shù)組中根據(jù)條件取出一段值并返回。
l Array_diff() 返回兩個數(shù)組的差集數(shù)組
l Array_intersect() 返回兩個或多個數(shù)組的交集數(shù)組
l Array_search($v, $arr) 數(shù)組中查找一個值,返回一個鍵,沒有返回返回假
l Array_splice($a1, $offset, $len, $a2) 把數(shù)組中一部分刪除用其他值替代
l Array_sum() 返回數(shù)組中所有值的總和
l In_array($v, $arr) 在數(shù)組中搜索給定的值,區(qū)分大小寫
l Array_key_exists() 判斷某個數(shù)組中是否存在指定的 key
l key(): 返回數(shù)組內(nèi)部指針當前指向元素的鍵名
l current(): 返回數(shù)組中的當前元素(單元).
l next(): 把指向當前元素的指針移動到下一個元素的位置,并返回當前元素的值
l prev(): 把指向當前元素的指針移動到上一個元素的位置,并返回當前元素的值
l end(): 將數(shù)組內(nèi)部指針指向最后一個元素,并返回該元素的值(如果成功)
l reset(): 把數(shù)組的內(nèi)部指針指向第一個元素,并返回這個元素的值
l list(): 用數(shù)組中的元素為一組變量賦值
l array_shift(): 刪除數(shù)組中的第一個元素,并返回被刪除元素的值
l array_unshift(): 在數(shù)組開頭插入一個或多個元素
l array_push(): 向數(shù)組最后壓入一個或多個元素
l array_pop(): 取得(刪除)數(shù)組中的最后一個元素
l shuffle(): 將數(shù)組打亂,保留鍵名
l count(): 計算數(shù)組中的單元數(shù)目或?qū)ο笾械膶傩詡€數(shù)
l array_flip(): 返回一個鍵值反轉(zhuǎn)后的數(shù)組
l array_keys(): 返回數(shù)組所有的鍵,組成一個數(shù)組
l array_values(): 返回數(shù)組中所有值,組成一個數(shù)組
l array_reverse(): 返回一個元素順序相反的數(shù)組 元素順序相反的一個數(shù)組,鍵名和鍵值依然匹配
l array_count_values(): 統(tǒng)計數(shù)組中所有的值出現(xiàn)的次數(shù)
l array_rand(): 從數(shù)組中隨機抽取一個或多個元素,注意是鍵名!!!
l array_unique(): 刪除重復值,返回剩余數(shù)組
l sort(): 按升序?qū)o定數(shù)組的值排序,不保留鍵名
l rsort(): 對數(shù)組逆向排序,不保留鍵名
l asort(): 對數(shù)組排序,保持索引關(guān)系
l arsort(): 對數(shù)組逆向排序,保持索引關(guān)
l ksort(): 系按鍵名對數(shù)組排序
l krsort(): 將數(shù)組按照鍵逆向排序
l natsort(): 用自然順序算法對數(shù)組中的元素排序
l natcasesort(): 自然排序,不區(qū)分大小寫
l array_column() 返回輸入數(shù)組中某個單一列的值。
12、命名空間
參考:https://www.runoob.com/php/php-namespace.html
13、面向?qū)ο?/p>
參考:https://www.runoob.com/php/php-oop.html