phpize
內(nèi)存用來存儲運行的程序及數(shù)據(jù)懂鸵。變量名及變量值在內(nèi)存的不同位置偏螺。
內(nèi)存組成:
棧區(qū):空間小,運行速度快匆光,存儲變量名套像、函數(shù)名、常量名等终息。
堆區(qū):空間大夺巩,運行速度慢,一般存儲復(fù)雜數(shù)據(jù)(數(shù)組周崭、對象)
全局?jǐn)?shù)據(jù)區(qū):
存儲變量值柳譬、常量值等
代碼區(qū):
存儲函數(shù)、方法续镇。
案例:
a摸航,將變量值的存儲地址存儲在棧區(qū)的變量名中制跟。
讀取變量:
$a—棧區(qū)拿到變量的在變量區(qū)的存儲地址oxFF---去對應(yīng)地址讀取值
echo語句
輸出字符串、變量及表達(dá)式
可以
同時輸出多個變量及字符串
忙厌。
image.png
print語句
可以輸出字符串及變量及表達(dá)式
與echo語句的區(qū)別為:
print不支持 同輸出多個
字符串及變量凫岖。
為語言結(jié)構(gòu),不是函數(shù)逢净。
var_dump()
輸出
一個或者多個變量
的類型哥放,長度及值
。一般用于打印復(fù)雜變量
爹土,如數(shù)組甥雕。
image.png
print_r()
輸出變量的值。一般用于打印變量胀茵。打印數(shù)組
相較于var_dump清晰
image.png
刪除變量
unset($var);
刪除變量名及值之間的對應(yīng)關(guān)系社露。 變成未定義變量
變量名及變量值不會立即消失
,PHP有專門的垃圾回收
機(jī)制處理琼娘。
引用傳遞
地址傳遞峭弟。
a;
&取地址符號附鸽,將b。
二者指向同一地址
刪除一個變量瞒瘸,另外一個不受影響:
1)$_SERVER
是一個數(shù)組坷备,保存執(zhí)行環(huán)境及服務(wù)器的信息。
2)$_GET
3)$_POST
4)$_REQUEST
1)語法
define(常量名,常量值,TRUE/FALSE);
1)注意
常量默認(rèn)區(qū)分大小寫情臭。
常量名推薦全部字母大寫
常量不可以重復(fù)定義及修改數(shù)據(jù)省撑。
設(shè)置第三個參數(shù)為true,常量不區(qū)分大小寫
2)const 常量名=常量值
3)constant()
可以獲取對應(yīng)的(特殊常量名)常量值。
1)get_defined_constants()
獲取當(dāng)前腳本執(zhí)行中全部已經(jīng)定義的常量俯在。返回為數(shù)組竟秫。包括預(yù)定義常量及用戶定義的常量。
PHP_INT_MAX
PHP_INT_SIZE
魔術(shù)常量
它們的值隨著它們在代碼中的位置改變而改變
1)__DIR__
文件所在的目錄跷乐。
1)
__LINE__
獲取當(dāng)前的行號
1)
__FILE__
獲取當(dāng)前執(zhí)行腳本的路徑及文件名肥败。
JS的數(shù)據(jù)類型:
5基本(number, string, boolean, null, undefined ),1復(fù)雜(object)
特殊類型
1)null
為null的幾種情況:
變量未賦值 變量被刪除 變量被賦值為null
2)resource
資源型,為到第三方數(shù)據(jù)的引用(如成功的數(shù)據(jù)庫連接等)
進(jìn)制轉(zhuǎn)換函數(shù)
decimal:10進(jìn)制
binary:二進(jìn)制
octal:八進(jìn)制
hexdecimal:十六進(jìn)制
decbin(int 值):十進(jìn)制轉(zhuǎn)二進(jìn)制
decoct(int 值):十進(jìn)制轉(zhuǎn)八進(jìn)制
dechex(int 值):十進(jìn)制轉(zhuǎn)16進(jìn)制
bindec(string 值):
octdec(string 值)
hexdec(string 值)
浮點型類型
l 小數(shù)愕提。一般用float,double表示拙吉。
l 一般程序語言有單精度、雙精度之分(精度為小數(shù)的位數(shù))揪荣。PHP只實現(xiàn)了雙精度。
l 最多為14位有效數(shù)字往史,表示范圍為-1.810^-308---- 1.810^308
l 占據(jù)的空間為8字節(jié)仗颈。
0.123456 有效數(shù)字為6,小數(shù)位6位
1) 浮點型的表現(xiàn)形式
常用格式 1.2
科學(xué)計數(shù)法 1.234e2
eN表示10的N次方
2) isset()
變量未設(shè)置或者設(shè)置為null
,返回false椎例。其余情況全部為true
3) empty()
判斷變量是否為空挨决。
邏輯判斷為false
的變量,使用empty判斷订歪,返回true脖祈。
4) is_type系列函數(shù)
l is_int/is_integer 判斷是否是整型
l is_float/is_double/is_numeric(是否是數(shù)值型)
l is_string
l is_boolean/is_bool
l is_array
l is_null
l is_resource
返回值 為true或者false。
類型判斷與轉(zhuǎn)換
1. gettype()
獲取數(shù)據(jù)的類型名稱字符串刷晋。
返回的字符串的可能值為:
l boolean
l integer
l double
l string
l array
l object
l resource
l NULL
1.自動轉(zhuǎn)換
PHP本身為弱類型語言盖高,支持類型的自動轉(zhuǎn)換霎褐。
數(shù)據(jù)參與運算時怕吴,根據(jù)實際環(huán)境自動轉(zhuǎn)換類型參與運算。
如算術(shù)運算赖欣,為數(shù)值捏悬。
參與算術(shù)運算的數(shù)據(jù)為數(shù)值類型撞蚕。
轉(zhuǎn)換為數(shù)值類型的原則:
純數(shù)字組成的字符串轉(zhuǎn)換為相應(yīng)的數(shù)字
可以轉(zhuǎn)換為浮點型的字符,轉(zhuǎn)換為相應(yīng)的浮點數(shù)过牙。
不以數(shù)字開頭的字符串甥厦,轉(zhuǎn)換為0.包括’true’纺铭。
布爾型true轉(zhuǎn)換為1,false轉(zhuǎn)換為0.
自動轉(zhuǎn)換后不該變原始變量的數(shù)據(jù)類型刀疙,僅修改參與運算的類型
image.png
image.png
1.類型強(qiáng)制轉(zhuǎn)換
轉(zhuǎn)換原則:
與類型自動轉(zhuǎn)換原則一致舶赔。
(類型字符串)變量;
2.自動轉(zhuǎn)換及強(qiáng)制轉(zhuǎn)換比較
轉(zhuǎn)換之后庙洼,原始數(shù)據(jù)類型不發(fā)生轉(zhuǎn)換顿痪,只是數(shù)據(jù)參與運算的值發(fā)生改變
自動轉(zhuǎn)換(根據(jù)環(huán)境)的原則與強(qiáng)制轉(zhuǎn)換(人為轉(zhuǎn)換)的原則一致。
3.settype()
將變量設(shè)置為指定的類型油够。
settype($name,’類型字符串’)
返回值為true(成功時)或者false蚁袭。
會修改變量的值
算術(shù)運算符 > 比較運算符 > 邏輯運算符 > 賦值運算符
()可以改變運算的優(yōu)先級。
字符串連接符.字符串分隔符,
1)錯誤抑制符
放在表達(dá)式前石咬,忽略錯誤信息揩悄。
錯誤抑制符為@
可以放在變量、常量及函數(shù)的調(diào)用之前
die/exit(“提示”);
include與require區(qū)別
四個語言結(jié)構(gòu)鬼悠,不是函數(shù)
include與require區(qū)別:
include引入文件失敗删性,返回警告warning,后續(xù)代碼繼續(xù)執(zhí)行
require引入文件失敗焕窝,返回fatal error蹬挺,后續(xù)代碼不執(zhí)行
引入的文件為后續(xù)代碼必須使用的,建議require.
_once作用:
對于已經(jīng)載入文件它掂,不再進(jìn)行載入巴帮,避免函數(shù)的重復(fù)定義。
1.全局變量的生命周期
`全局變量的生命周期為腳本的執(zhí)行周期虐秋。`
2.局部變量的生命周期
`局部變量的生命周期:函數(shù)調(diào)用時創(chuàng)建榕茧,到函數(shù)調(diào)用結(jié)束時銷毀。
1)time()為10位整型數(shù)字客给。
2)date()
格式化時間戳用押。
date(格式字符串[,時間戳]);
最常用的格式為:Y-m-d H:i:s
其他格式:
`microtime()`
返回當(dāng)前的微秒數(shù)及時間戳字符串靶剑。
使用true參數(shù)時蜻拨,返回對應(yīng)的浮點數(shù)。通常用于生成口令桩引。
生成的令牌:12deb0c64b76dd259c2a451f058564a4
數(shù)學(xué)函數(shù)
1)max(),min()
分別返回最大值及最小值
2)abs()
返回絕對值
3)floor()
向下取整
4)ceil()
向上取整
5)round()
四舍五入
6)rand() 和 mt_rand()
返回隨機(jī)數(shù)
mt_rand生成的速度是rand的四倍多官觅。
7)pow(),sqrt()
power 冪次 pow(x,y)
sqrt:平方根
square 平方 root 根 sqrt
遞歸思想
1)本質(zhì)
函數(shù)內(nèi)部去調(diào)用函數(shù)本身。
2)遞歸兩要素
遞歸的出口阐污。結(jié)束遞歸調(diào)用
遞歸的調(diào)用點(入口):什么情況下函數(shù)開始調(diào)用本身休涤。
3)應(yīng)用:階乘
5! =54!=54321
n! =n (n-1)!
1! = 1;
f(n)表示第n項的階乘功氨,
f(n)=n*f(n-1);
執(zhí)行時占用的空間比較大序苏。
迭代思想
5! =1*2*3*4*5
介紹
又稱遞推捷凄。
將已知條件作為迭代的原始值忱详,由原始值推出它的新值。再把這個新值當(dāng)成下一次的循環(huán)的原始值跺涤,再來推出下一個新值匈睁,以此類推。
執(zhí)行效率非常高桶错。
案例
使用迭代思想求解階乘
上傳文件錯誤代碼
以下三項可以在php.ini中修改.
upload_max_filesize //上傳允許的單文件的最大值
max_file_uploads //上傳文件的允許最大數(shù)量
post_max_size //上傳所有文件字節(jié)允許的最大值
對上傳文件擴(kuò)展名的判斷
pathinfo(文件名)
上傳文件類型的判斷(MIME)
利用php_fileinfo.dll對MIME類型進(jìn)行嚴(yán)格檢查:
開啟php_fileinfo.dll擴(kuò)展
$fs = finfo_open(FILEINFO_MIME_TYPE) // 可以理解為返回的是所有PHP支持的MIME類型
$mime = finfo_file($fs,上傳的臨時文件); //在$fs查詢中 上傳的臨時文件 的MIME,返回文件類型.
目錄名中文的處理
如: iconv(‘gbk’,’utf-8’,’你好’) ; //將”你好”由gbk轉(zhuǎn)為utf-8.
Unlink(文件路徑); //返回布爾
HTTP請求的構(gòu)成
構(gòu)成: 請求行,請求頭,[空白行],請求體
image.png
image.png
image.png
Host: 請求的主機(jī)名
Connect: 保持連接
User-Agent: 瀏覽器的相關(guān)信息航唆,會自動攜帶給服務(wù)器
Accept: 瀏覽器所能處理的數(shù)據(jù)的格式
Accept-Encoding: 瀏覽器所支持的壓縮格式
Accept-Language: 瀏覽器所支持的語言
If-Modified-Since: 用于詢問當(dāng)前所請求的內(nèi)容,自從上次是否有修改過
PHP擴(kuò)展:curl實現(xiàn)數(shù)據(jù)采集
1.采集
就是收集其他網(wǎng)站(網(wǎng)頁)上的信息院刁,并對其進(jìn)行“為我所用” 的處理糯钙!
這種處理比如:存入到數(shù)據(jù)庫,或保存為文件保存起來
2.Curl函數(shù):系統(tǒng)函數(shù)退腥,需要去打開php的模塊 extension=php_curl.dll
3.原理:
使用該函數(shù)任岸,模擬瀏覽器,根據(jù)http請求協(xié)議的格式發(fā)送請求狡刘,該函數(shù)能夠獲得服務(wù)器端返回的響應(yīng)信息
實現(xiàn)四步驟:
第一步:初始化CURL請求. //如: $link = curl_init(網(wǎng)址)
第二步:設(shè)置請求選項. //如: curl_setopt = ($link,選項名,選項值);
第三步:執(zhí)行請求并返回結(jié)果. //如: $result = curl_exec($link);
第四步:關(guān)閉CURL請求. //如: curl_close($link);
1)301 //域名的永久重定向
2)302 //域名臨時重定向
3)304 //直接從本地加載資源
4)403 //沒有權(quán)限訪問
5)404 //所請求的資源不存在
6)500 //主要是來自服務(wù)器方面的錯誤
setcookie ( $name, $value ,$expire , $path ,$domain]
說明:
1) $name //cookie的名稱
2) $value // cookie 的值
3) $expire//過期時間,單位, 秒,當(dāng)前時間戳加上秒數(shù), time()+3600,//有效時間1小時. time()+604800,一周時間
4) $path . // 有效路徑, 默認(rèn)為當(dāng)前根目錄及所有的子目錄有效
5) $domain // 有效域名. 默認(rèn)為當(dāng)前的域名, 如: [<u>www.abc.com</u>](http://www.abc.com)
如何徹底刪除session?
1)unset() //將變量銷毀
2)session_destroy()//刪除當(dāng)前session文件
3)將session的id刪除 (刪除cookie)
4)Setcookie(名,值,time()-99999);
5)Setcookie(session_name(),session_id(),time()-999999)
SESSION的垃圾回收:
什么是SESSION的垃圾回收?
在用戶非正確退出時,在服務(wù)器生成的session文件會一直存在. 時間一長,這樣的文件越來越多. PHP引擎會將這部分文件按時間,按一定的比例進(jìn)行刪除.
SESSION垃圾回收時間(session.gc_maxlifetime), //默認(rèn)是1440, 即24分鐘,文件超過24分鐘沒有再被訪問,即為垃圾文件.
回收的概率(session.gc_probability, session.gc_divisor)
session.gc_probability //默認(rèn)為1
session.gc_divisor//默認(rèn)為1000
在php.ini中相關(guān)設(shè)置
SESSION相關(guān)配置
1.session.name = PHPSESSID
2.session.auto_start =0 關(guān)閉, 1為自動開啟session (不建議自動開啟)
3.session.cookie_lifetime=0 //代表瀏覽器關(guān)閉,會話結(jié)束
4.session.cookie_path=/ //指定了要session會話 cookie 的有效路徑
5.session.cookie_domain //指定了要session會話 cookie 的有效域名
6.腳本設(shè)置: 注意: 要在session_start()之前進(jìn)行設(shè)置才有效.
a)ini_set('session.cookie_path', '/');
b)ini_set('session.cookie_domain', '.mydomain.com');
ini_set('session.cookie_lifetime', '1800')