PHP基礎知識

zrghs發表於2020-12-25

1、PHP是什麼?

PHP是一種建立動態互動性站點的伺服器指令碼語言。

2、PHP的語法

PHP指令碼可以放置在文件的任何位置,PHP指令碼是以<?php開始,?>結束。PHP檔案的預設副檔名是“.php”,PHP檔案通常包含HTML標籤和PHP指令碼程式碼。PHP中每個程式碼行必須以分號(;)結束,分號是一種分隔符,用來把指令集區分開來。

3、PHP變數

變數是用於儲存資訊的容器。

4、echo、print、print_r、printf、sprintf、var_dump的區別

echo是PHP語言,沒有返回值,可以輸出一個或多個簡單型別資料(int、string)。

print即使函式又不能算是函式(print()可以列印資料,print也可以直接列印資料),有返回值,可以列印一個簡單型別的資料(int、string)。

print_r是函式,有返回值,可以列印複雜型別的資料(array、object)。

printf是函式,輸出格式化之後的字串。

sprintf是函式和printf一樣,唯一不同的是它不會直接輸出,而是要賦值給一個變數。

var_dump是函式,用來輸出變數的內容、型別、長度,通常用來除錯。

5、EOF(heredoc)是什麼及使用方法

EOF(heredoc)是一種在命令列和程式語言裡定義一個字元的方法。

  1. 結尾必須以分號結束,否則編譯不成功。
  2. EOF可以用任何字元代替,但首位必須一致。
  3. 結束標識必須頂格獨自佔一行(從首行開始前後不能銜接任何空白字元)
  4. 開始標識可以不帶引號或帶單雙引號,不帶引號和帶單雙引號效果一樣。

5、PHP資料型別

integer(整型)、string(字串)、float(浮點型)、boolean(布林)、array(陣列)、object(物件)、null(空值)

6、PHP常量

常量是一個簡單值得識別符號,該值在指令碼中不能改變。常量名稱是由英文、下劃線、和數字構成,但是數字不能作為首字母(常量名不需要加$符),常量是全域性的。

define('常量名稱', '常量值', false),define用來定義常量,第一個引數是常量名稱,第二個引數是常量值,第三個引數是bool(true、false)預設是false大小寫敏感,true是大小寫不敏感。

7、PHP註釋符號

  1. /*多行註釋*/
  2. //單行註釋
  3. #單行註釋

8、在PHP裡 .的作用是什麼

在PHP裡 . 的作用是拼接字串

9、PHP運算子

  1. 算術運算子:+相加、-相減、*乘法、/除法、-x取反、%除法取餘、.拼接、intdiv()整除(PHP7+新增運算子)
  2. 賦值運算子:=左側運算元被設定為右側表示式數、+=相加、-=相減、*=相乘、/=相除、%=除法取餘、.=連線兩個字串
  3. 遞增、遞減運算子:++i(先i+1,然後返回i)、i++(先返回i,然後i+1)、--i(先i-1,然後返回i)、i--(先返回i,然後i-1)
  4. 比較運算子:==相等、===絕對相等(型別相同)、!=不等、!==絕對不等、<>不等、<小於、>大於、<=小於等於、>=大於等於
  5. 邏輯運算子:and與、or或、&&與、||或、xor異或、!非
  6. 陣列運算子:+集合、==相等、===恆等、!=不相等、!==不恆等、<>不相等
  7. 三元運算子:格式(isset($x) ? $x : $y),PHP7+新增null合併運算子??(格式:$x ?? '$x為空',$x存在不為null,返回$x。為null返回錯誤提示)
  8. 組合比較符:PHP7+新增組合運算子也稱之為太空船運算子,可以輕鬆實現兩個變數的比較,不僅限於數值類的比較。組合運算子格式:<=>,組合運算子解析:$x = $a <=> $b,$a > $b則$x等於1,$a < $b則$x等於-1,$a == $b則$x等於0。

10、if...elseif...else和switch判斷語句

if...elseif...else和switch都是根據條件判斷去執行不同動作。

11、超全域性變數

超全域性變數是PHP自帶變數,在指令碼的全部作用域都可用。$GLOBALS、$_GET、$_POST、$_FILES、$_ENV、$_SERVER、$_COOKIE、$_SESSION、$_REQUEST

12、PHP迴圈

while、do...while、for、foreach

13、魔術常量

__LINE__檔案中當前行號、__FILE__檔案完整的路徑和檔名、__CLASS__當前類名、__FUNCTION__當前函式名、__METHOD__當前類名和方法名、__NAMESPACE__當前名稱空間、__DIR__檔案所在目錄、__TRAIT__程式碼複用方法traits

14、include、require、include_once、require_once的區別

include、require、include_once、require_once包含載入檔案其他檔案程式碼

include、require不同之處:require會產生致命報錯,當檔案程式碼有錯誤的時候指令碼會停止執行,include在檔案程式碼有錯誤時會生成一個警告,指令碼會繼續執行。

include_once、require_once只包含一次,如果已經存在檔案程式碼,就不會繼續包含載入。

15、cookie、session的相同和不同之處

cookie、session跨頁面不跨使用者,cookie只能能儲存字串型別資料,session可以儲存任何人型別資料。cookie產生於伺服器,儲存在客戶端。session產生於伺服器,儲存在伺服器。

16、Redis和MemCached的區別:

Redis和MemCached都是key-value儲存系統,MemCached儲存資料型別單一,Redis可儲存多種資料型別。Redis速度比MemCached快,MemCached存在記憶體中,斷電資料會丟失。

17、Redis資料型別

string字串、hash雜湊、list列表、set集合、sorted set有序集合

18、MySQL int(11)可以儲存手機號碼嗎

不可以,int型別的長度4個位元組,手機號在第5個位元組的時候會被吞掉。

19、MySQL索引有幾種,有什麼區別沒有

  1. 普通索引:沒有任何限制
  2. 唯一索引:與普通索引類似,不同之處就是索引欄位值是唯一的允許有空值
  3. 主鍵索引:一般是建表的時候設定,主鍵值是唯一的,不允許有空值
  4. 複合索引:多個列上建立索引,加速複合條件查詢
  5. 全文索引:在MySQL5.6之前只有MyISAM引擎有全文索引,MySQL5.6之後InnoDB也支援全文索引。

20、MySQL中MyISAM和InnoDB的區別

MyISAM引擎查詢快,支援全文索引,不支援事務、外來鍵,支援表級鎖。

InnoDB引擎查詢慢,增刪改快,支援事務、外來鍵,支援事務和行級鎖。MySQL5.6之後支援全文索引。

21、InnoDB 4大特徵

  1. 插入緩衝
  2. 二次寫
  3. 預讀
  4. 自適應hash索引

21、資料庫最佳化

  1. 選擇合適的欄位型別(比如用varchar替換char)
  2. 用join連線代替子查詢
  3. 使用union聯合代替手動建立臨時表
  4. 事務
  5. 鎖定表
  6. 使用外來鍵
  7. 使用索引
  8. 最佳化查詢語句
  9. 分庫、分表

22、最佳化查詢語句的方法

  1. select查詢儘量不要直接用*,直接使用指定的欄位
  2. 在相同型別的欄位上作比較操作(不用進行型別轉換)
  3. 不要在索引的欄位上使用函式操作
  4. 儘量使用數字型別欄位
  5. 避免使用!=、<>、is null、is not null
  6. 建議每張表都設定自增主鍵
  7. 避免大事務操作


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69990906/viewspace-2745166/,如需轉載,請註明出處,否則將追究法律責任。