1.include和require的區別
- 加載失敗的處理方式不同,引入不存在的檔案時,
include會產生警告且腳本還會繼續執行,require則會導致一個致命性錯誤且腳本停止執行, - 檔案參考方式不同,
include()執行時需要參考的檔案每次都進行執行,并且可以有回傳值,require()只是單純的檔案替換,沒有回傳值
require一般放在PHP檔案的最前面,程式在執行前會先倒入所需要參考的檔案;include一般放在程式的控制流程中,當程式執行時碰到才會參考,簡化程式的執行流程,
2.常用關鍵字
final:用于宣告方法和類,修飾類時,該類不能被繼承,修飾方法時,該方法不能被覆寫,
static:主要用來修飾成員變數以及成員方法,分別為靜態變數和靜態方法,通過類直接呼叫,
global:主要使用于函式內宣告變數為全域變數,在函式內部可以使用外部變數,global宣告的變數只是全域變數的一個同名參考,$GLOBALS是全域變數本身,
this、self、parent:this是指向當前物件的指標,self是指向當前類的指標,parent是指向當前父類的指標,
Trait:是為PHP的單繼承語言而準備的一種代碼復用機制,Trait 為了減少單繼承語言的限制,使開發人員能夠自由地在不同層次結構內獨立的類中復用
interface:介面是一個成員屬性全部為抽象或常量的特殊抽象類,作用是:彌補PHP單繼承,單繼承,多實作
(1)定義的方法都是抽象方法,只需要宣告,不需要實作
(2)定義的變數全部為常量(const宣告)
implements:實作介面,可以多實作
abstract:修飾方法時,只有方法名,沒有方法體(abstract function());只要宣告抽象方法的類就是抽象類;抽象類不能實體化,可以被繼承,可以看做子類實作的規范和模板;
3.PHP7新特性
(1)添加了函式的形參宣告和回傳型別宣告
默認情況下,所有的PHP檔案都處于弱型別校驗模式,
PHP7增加了標量型別宣告的特性,標量型別宣告兩種模式
- 強制模式(默認)
- 嚴格模式
PHP7增加了對回傳型別宣告的支持,回傳型別宣告指明了函式回傳值的型別;
(2)添加了NULL合并運算子(??)是用于執行isset()檢測的三元運算
(3)可以使用一個use從同一個namespace匯入多個類、函式;
(4)改變了大多數錯誤的報告機制;
4.單引號和雙引號
單引號:在單引號字串中的變數和特殊字符的轉義序列不會被替換
雙引號:在雙引號定義的字串最重要的特征是變數會被決議
5.echo、print、print_r、var_dump之間的區別
echo和print都是語言結構,只能輸出簡單型別的值(字符、數字),唯一不同的是echo支持輸出多引數,print只能輸出一個引數print_r和var_dump是函式,可用于列印陣列和物件,前者只支持一個引數,后者支持多個引數并且顯示資訊更詳細,常用于除錯,var_export輸出或回傳一個變數的字串表示,和var_dump功能類似,但是輸出的是合法的php代碼
6.POST、GET、PUT、DELETE
基于CURD:
POST => Create
GET => Read
PUT => Update
DELETE => Delete
7.用PHP寫出顯示客戶端IP和服務器端IP的代碼
echo $_SERVER['REMOTE_ADDR']. "<br/>"; //客戶端
echo $_SERVER['SERVER_ADDR']. "<br/>"; //服務器端
8.用PHP列印出前一天的時間,格式例如 2006-5-10 22:21:21
echo '當前時間:'.date('Y-m-d H:i:s', time()). "<br/>";
echo '前一天時間:'.date('Y-m-d H:i:s', strtotime('-1 day')). "<br/>";
9.寫一個函式,能夠遍歷一個檔案夾下的所有檔案和子檔案夾
//opendir:打開目錄句柄
//readdir:回傳目錄句柄中的條目
//closedir:關閉目錄句柄
//mkdir:創建目錄
//rmdir:洗掉目錄
//is_dir:是否是目錄
function read($dir = ''){
$handle = opendir($dir);
if ($handle){
while ($file = readdir($handle)){
if ($file!='.' && $file!='..'){
$fullpath = $dir.'/'.$file;
if (is_dir($fullpath)){
echo $fullpath, "<br/>";
read($fullpath);
}else{
echo $fullpath, "<br/>";
}
}
}
}
closedir($handle);
}
10.isset()和empty()
FALSE:當轉換為boolean時,以下值被認為是false
-布林值false本身
-整型值0(零)
-浮點值0.0
-空字串'',字串'0',以及尚未賦值的變數
-不包含任何元素的陣列
-特殊型別NULL
-所有其他值都被任務是TRUE
NULL型別的三種情況:
-通過變數賦值明確指定變數的值為NULL
-一個變數沒有給任何值
-使用函式unset()將變數銷毀掉
empty():當傳入的變數的值為false或者null,為true,反之為false
isset():當出入的變數為null時,為true,反之為false
11.關于error
在程式開發除錯錯誤的程序中,我們總會遇到各種各樣的error,部分error會影響到代碼的執行,部分則只是給出一個WARNING或NOTICE,不會影響下面代碼的繼續執行,
@:錯誤控制運算子,放在php運算式之前,該運算式可能產生的任何錯誤資訊都被忽略掉
error_reporting(int $level):設定應該報告何種php錯誤,設定為0則關閉掉錯誤報告
12.修改SESSION的生存時間
php.ini檔案中的session.gc_maxlifetime的值進行修改,然后重啟,或者代碼設定
13. php.ini檔案中的safe_mode
safe_mode:安全模式,提供一個基本安全的共享環境,當safe_mode打開時,一些訪問檔案系統的函式功能會被限制,如:mkdir,touch,readdir,opendir等..
14.如何得到網址http://www.phpres.com/index.html的內容
echo file_get_contents('https://www.baidu.com');
//parse_url:決議一個URL并回傳一個關聯陣列,包含在URL出現的各種組成部分
print_r(parse_url('http://www.phpres.com/index.html'));
15.取出檔案擴展名
$str = 'dir/upload.image.jpg';
echo array_pop(explode('.', $str)), "<br/>";
echo pathinfo($str, PATHINFO_EXTENSION), "<br/>";
16.求兩個日期的差值 2007-2-5 ~ 2007-3-9
$ints1 = strtotime('2007-3-5');
$ints2 = strtotime('2007-3-9');
echo ($ints2-$ints1)/(60*60*24), "<br/>";
17.將'open_door'轉換成'OpenDoor',將'make_by_id'轉換成'MakeById'
$str1 = 'open_door';
$str2 = 'make_by_id';
echo str_replace(' ', '', ucwords(str_replace('_', ' ', $str1))), "<br/>";
echo str_replace(' ', '', ucwords(str_replace('_', ' ', $str2))), "<br/>";
18.超全域變數
超全域變數是在全部作用域中始終可用的內置變數,
$GLOBALS:參考全域作用域中可用的全部變數
$_SERVER:服務器和執行環境的資訊
$_GET:HTTP GET變數
$_POST:HTTP POST變數
$_FILES:HTTP 檔案上傳變數
$_COOKIE:HTTP Cookies
$_SESSION:Session變數
$_REQUEST:HTTP Request變數
$_ENV:環境變數
19.常用魔術常量
__LINE__:檔案中的當前行號
__FILE_:檔案的完整路徑和檔案名
__DIR__:檔案所在的目錄
__FUNCTION__:函式名稱
__CLASS__:類的名稱
__TRAIT__:Trait的名字,包括其被宣告的作用區域
__METHOD__:類的方法名
__NAMESPAC__:當前命名空間的名稱
20.決議函式、解構式,常用的魔術方法
__construct:在類被實體化的時候自動執行;
__destruct:在物件被銷毀的時候自動執行;
__toString:在物件被當成字串使用時自動執行;
__invoke:在物件被當成函式執行的時執行執行;
__clone:在克隆物件時自動執行;
數值常用函式
float ceil($num):進一取整
float floor($num):舍一取整
float round($num, $n):四舍五入,可保留n位小數
number pow(number $base, number $exp):冪運算
float sqrt(float $arg):平方根
number max($num1, $num2...):回傳最大值
number min($num1, $num2...):回傳最小值
int rand($min, $max):產生min到max之間的亂數
int mt_rand($min, $max):同上,但效率更高
string number_format($number, $n):以千分位分隔符方式格式化數字,并保留n位小數
字串常用函式
--- 長度
int strlen($var):獲取字串或數字的長度(漢字默認UTF8格式,長度位3)
int mb_strlen($var):獲取字串或數字的長度(漢字長度位1)
--- 大小寫
string strtolower($str):單詞小寫
string strtoupper($str):單詞大寫
string ucfirst($str):首字母大寫,其他字母不變
string ucwords($str):每個單詞首字母大寫,其他字母不變
--- 替換
string str_replace($search, $replace, $str):將字串str里面的serach部分換位replace字串,區分大小寫
string str_ireplace($search, $replace, $str):同上,不區分大小寫
string htmlspecialchars($str):將str里面的字符轉換為html物體,比如將<改為<
--- 去除空格
string ltrim($str):洗掉左邊的空格
string rtrim($str):洗掉右邊的空格
string trim($str):洗掉兩邊的空格
--- 位置
int strpos($str, $needle):回傳needle第一次在str出現的位置,區分大小寫
int stripos($str, $needle):同上,不區分大小寫
int strrpos($str, $needle):回傳needle最后一次在str出現的位置,區分大小寫
int strripos($str, $needle):同上,不區分大小寫
-- 截取
string substr($str, $offset, $length):字串截取
--- 反轉
string strrev($str):字串反轉
--- 加密
string md5($str):md5加密
--- 打亂
string str_shuffle($str):隨機打亂字串,可用于產生隨機驗證碼
--- 拆散組合
array explode($delimiter, $str):將字串str按照delimiter分割成陣列
string imploae($glue, $arr):將陣列arr按照glue拼接成字串
陣列常用函式
mixed array_shift(array &$arr):將陣列第一個元素移除陣列并回傳,將array的長度減1并將其他單元向前移動一位,所有數字鍵名改為從0開始計數
mixed array_unshift(array &$arr, mixed $str):在陣列的開頭插入一個或多個單元,將傳入的單元插入到array陣列的開頭,
int array_push(array &$arr, mixed $v1...):將一個或多個單元壓入陣列的末尾(入堆疊),陣列長度增加,回傳壓入后陣列的長度
mixed array_pop(array &$array):彈出陣列的最后一個單元,陣列長度減1
mixed array_rand(array $array, $n):從陣列中隨機取出n個鍵名
current($arr):回傳陣列中的當前單元的值
key($arr):回傳陣列中的當前單元的鍵
prev($arr):將陣列中的內部指標向前移動一位,并回傳值
next($arr):將陣列中的內部指標向后移動一位,并回傳值
reset($arr):將陣列中內部指標指向第一個單元
end($arr):將陣列中的內部指標指向最后一個單元
array_keys($arr):回傳陣列中所有的鍵
array_values($arr):回傳陣列中所有的值
array_mpa('function', $arr):將用戶自定義函式作用到陣列中的每個值上,并回傳用戶自定義函式作用后的帶有新值的陣列
檔案常用函式
int filesize($filename):回傳檔案大小的位元組數
int filectime($filename):回傳檔案的創建時間的時間戳
int filemtile($filename):回傳檔案的最后修改時間的時間戳
int fileatime($filename):回傳檔案最后訪問時間的時間戳
is_readable($filename):是否可讀
is_writabel($filename):是否可寫
is_executable($filename):是否可執行
is_file($filename):是否是檔案
file_exists($filename):檔案是否存在
array pathinfo($filename, PATHINFO_EXTENSION)
PAHTINFO_DIRNAME:檔案夾名
PATHINFO_BASENAME:檔案全稱
PATHINFO_EXTENSION:檔案拓展名
PATHINFO_FILENAME:檔案名
bool touch($filename):創建檔案
bool unlink($filename):洗掉檔案
bool rename($oldname, $newname):重命名
bool copy($source, $des):將source檔案移動到des
string file_get_contents($filename):將整個檔案讀入一個字串
int file_put_contents($filename, $str):將一個字串寫入檔案
string serialize($value):產生一個可存盤的值的表示,成為字串
mixed unserialize($str):從已存盤的表示中創建php的值,成為反序列化
string json_encode($value):對變數進行json編碼,回傳json字串
mixed json_decode($str):對json格式的字串進行編碼,轉換成php變數
日期常用函式
--- 時區相關
php.ini檔案中的date.timezone
string date($format, int $timestamp):格式化一個時間戳 format:Y-m-d H:i:s
int time():回傳當前Unix時間戳,即1970年1月1日0時0分0秒到現在的總秒數
float microtime(true):回傳當前Unix時間戳微秒數
int strtotime(string $time):將字串轉換為Unix時間戳
yesterday 昨天00:00:00
-1 day 昨天
-1 month 一個月前
array getdate(int $timestamp):可以日期、時間資訊
Array
(
[seconds] => 43 //秒
[minutes] => 50 //分
[hours] => 15 //小時
[mday] => 1 //一個月中的第幾天
[wday] => 4 //一周中的第幾天
[mon] => 8 //月
[year] => 2019 //年
[yday] => 212 //一年中的第幾天
[weekday] => Thursday //星期幾的名稱
[month] => August //月份名稱
[0] => 1564667443 //時間戳
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/67428.html
標籤:PHP
上一篇:empty()和isset()
下一篇:關于date()
