本文主要和大家分享PHP基礎知識梳理詳解,希望能協助到大家。
雙引號解釋變數,單引號不解釋變數
雙引號裡插入單引號,其中單引號裡如果有變數的話,變數解釋
雙引號的變數名後面必須要有一個非數字、字母、底線的特殊字元,或者用{}講變數括起來,否則會將變數名後面的部分當做一個整體,引起語法錯誤
能使單引號字元盡量使用單引號,單引號的效率比雙引號要高
GET和POST提交方式的區別
GET產生一個TCP資料包;POST產生兩個TCP資料包;
對於GET方式的請求,瀏覽器會把http header和data一併發送出去,伺服器響應200(返回資料)
對於POST,瀏覽器先發送header,伺服器響應100 continue,瀏覽器再發送data,伺服器響應200 ok(返回資料)。
GET在瀏覽器回退時是無害的,而POST會再次提交請求
GET請求會被瀏覽器主動cache,而POST不會,除非手動設定
GET請求參數會被完整保留在瀏覽器記錄裡,而POST中的參數不會被保留
GET請求只能進行url編碼,而POST支援多種編碼方式
GET比POST更不安全,因為參數直接暴露在URL上,所以不能用來傳遞敏感資訊
如何擷取用戶端的真實ip
$_SERVER['REMOTE_ADDR']或getenv('REMOTE_ADDR')
可以使用ip2long()轉成數字
include和require的區別
require是無條件包含,也就是如果一個流程裡加入require,無論條件成立與否都會先執行require,當檔案不存在或者無法開啟的時候,會提示錯誤,並且會終止程式執行
include有傳回值,而require沒有(可能因為如此require的速度比include快),如果被包含的檔案不存在的化,那麼會提示一個錯誤,但是程式會繼續執行下去
注意:包含檔案不存在或者語法錯誤的時候require是致命的,而include不是
AJAX的優勢是什麼
ajax是非同步傳輸技術,可以通過javascript實現,也可以通過JQuery架構實現,實現局部重新整理,減輕了伺服器的壓力,也提高了使用者體驗
在程式的開發中,如何提高程式的運行效率
最佳化SQL語句,查詢語句中盡量不使用select *,用哪個欄位查哪個欄位;
少用子查詢可用表串連代替;
少用模糊查詢;
資料表中建立索引;
對程式中經常用到的資料產生緩衝;
SESSION與COOKIE的區別
儲存位置:session儲存在伺服器,cookie儲存在瀏覽器
安全性:session安全性高於cookie
參考連結:https://www.zhihu.com/questio...
isset和empty的區別
isset()函數 一般用來檢測變數是否設定
若變數不存在則返回 FALSE
若變數存在且其值為NULL,也返回 FALSE
若變數存在且值不為NULL,則返回 TURE
empty()函數是檢查變數是否為空白
若變數不存在則返回 TRUE
若變數存在且其值為""、0、"0"、NULL、、FALSE、array()、var $var; 以及沒有任何屬性的對象,則返回 TURE
若變數存在且值不為""、0、"0"、NULL、、FALSE、array()、var $var; 以及沒有任何屬性的對象,則返回 FALSE
資料庫三範式
第一範式:1NF是對屬性的原子性約束,要求屬性具有原子性,不可再分解;
第二範式:2NF是對記錄的惟一性約束,要求記錄有惟一標識,即實體的惟一性;
第三範式:3NF是對欄位冗餘性的約束,即任何欄位不能由其他欄位派生出來,它要求欄位沒有冗餘。
主鍵、外鍵和索引的區別
定義:
主鍵--唯一標識一條記錄,不能有重複的,不允許為空白
外鍵--表的外鍵是另一表的主鍵, 外鍵可以有重複的, 可以是空值
索引--該欄位沒有重複值,但可以有一個空值斜體文字
作用:
主鍵--用來保證資料完整性
外鍵--用來和其他表建立聯絡用的
索引--是提高查詢排序的速度
個數:
主鍵--主鍵只能有一個
外鍵--一個表可以有多個外鍵
索引--一個表可以有多個唯一索引
堆和棧的區別
棧是編譯期間就分配好的記憶體空間,因此你的代碼中必須就棧的大小有明確的定義;
堆是程式運行期間動態分配的記憶體空間,你可以根據程式的運行情況確定要分配的堆記憶體的大小。
相關推薦:
PHP基礎面試題整理
PHP基礎函數執行個體詳解
php基礎知識筆記分享