整理自兄弟連學習視頻
<!--類型: 無類型 NULL 大小寫敏感 布爾型 bool Boolean 數值型 整型 integer 十進制 八進制 十六進制 浮點型 float 1.234 1.2e3 7E-10 當整型過大時,會自動轉換成浮點型 字符串 單引號 雙引號 定界符 如$string = <<<EDD……EDD 資源類型 特殊變量,保存了對外部資源的一個引用變量 PHP中,變量的類型可以任意轉換,變量定義時不需要明確的類型定義,變量類型的使用是根據上下文來決定的。 注意:$foo = 5 + '10 little piggies';輸出為15 允許的強制轉換有 布爾:(bool) (boolean) 整型: (int) (integer) 浮點型:(float) (double) (real) 可變變量: 指一個變量的變量名可以動態的設置和使用,一個可變變量獲取了一個普通變量的值作為其變量名,這個變量就叫可變變量。 如:$a='hello'; $$a='world'; var_dump($$a); echo'$$a'; 輸出結果:string(15) 'world' string(5) '$hello' 注意:超html' target='_blank'>全局變量不可做可變變量 預定義變量 $_SERVER 服務器變量,包含了頭信息,路徑,腳本位置等組成的數組 $_ENV 環境變量,包含操作系統類型,軟件版本等信息組成的數組 $_COOKIE HTTPCookies變量 通過HTTP Cookies傳遞的變量組成的數組 $_GET HTTP GET變量,通過HTTP GET方法傳遞的變量組成的數組 $_POST HTTP POST變量,通過 HTTP POST 方法傳遞給當前腳本的變量的數組。 $_FILES HTTP文件上傳變量,通過HTTP POST方法傳遞的已上傳文件項目組成的數組 $_REQUEST request變量,此關聯數組包含了$_GET,$_POST,$COOKIE中的全部內容 $_SESSION session變量,包含當前腳本中session數組 $GLOBALS 全局變量,由所有已定義全部變量組成的數組 外部變量 表單中的變量 HTTP Cookies也是外部變量 變量引用 用$開頭 變量銷毀 unset($a) //銷毀變量常量 定義 使用define函數定義 如:define('CONSTANT','hello world'); 注意: 常量前面沒有$符號 變量只能用define定義 常量可以在任何地方定義和訪問 一旦定義就不能再被更改魔術變量 __LINE__ 文件的當前行號 __FILE__ 文件的完整路徑和文件名,如果包含在文件中, __FUNCTION__ 函數名稱,返回該類型被定義時的名字 __CLASS__ 類的名稱,返回該類被定義時的名字 __METHOD__ 類的方法,返回該方法被定義時的名字運算符,表達式,語句 算術運算符 + - * /(返回的總是浮點數) 求模 % 取反 數值取反(-) 賦值運算符 自運算符 += -= %= *= /= 遞增遞減運算 ++ -- -- 字符串運算符 . .= 比較運算符 邏輯運算符 !(NOT) &&(AND) ||(OR) Xor 位運算符 & | ^ << >> ~ 執行運算符 ` PHP嘗試將執行運算符(反引號)中的內容作為外殼命令來執行,并將其輸出信息返回(例如,可以賦給一個變量而不是簡單的丟到標準輸出),通常用來執行操作系統命令 錯誤控制運算符 @ 當@放在PHP表達式前面時,表達式可能產生的任何錯誤信息都被忽略掉 注意:@只對表達式有效,例如,可以放在變量,函數,和include()調用,常量等之前,但不能放在函數或類的定義前,也不能用于條件結構前 表達式 語句 分號 注釋 // 單行注釋 # 單行注釋 /* 多行注釋 */順序流程 條件分支 if if…else ?: if…elseif…else switch…case(變量只能是數值和字符串類型) 循環 while do…while for(;;) foreach(僅用于數組) 關鍵字 break continue return 異常處理 try{ }catch(Exception e){ } declare語句 通常用來進行調試,目前只接受一個指令函數 內置函數 自定義函數 用function定義 在PHP中,函數具有全局性,可以在程序的任何地方引用,定義函數的位置可以在程序的任何地方,設置可以放在另一個函數的內部 如 <?php function foo(){ echo '這是foo函數<br>'; function bar(){ echo '這是bar函數<br>'; } } etc(); function etc(){ echo '這是etc函數<br>'; } foo(); bar(); ?> 注意: 在上述例子里,如果先調用bar()函數,能運行嗎?不能!因為此時由于fun()沒有執行,故bar()也就尚未定義,不能調用 如果,按照foo(),fun(),bar()的順序執行呢?依然會有錯誤,因為,當每次調用fun()都會對bar進行定義,故調用兩次fun(),會對bar()定義兩次,故也會出現定義 綜上所述,很少會在函數里定義函數,除非你確定外層函數只調用一次?。?! 函數參數 值傳遞 引用傳遞: &$var 如果希望函數修改函數外部的變量,則使用引用傳遞 默認值: 函數的參數可以設置一個默認值,默認值必須是常量表達式 注意:在函數參數使用默認值時,如果有多個參數,那么需要將默認值參數放在任何非默認值參數后面 返回值 只需要在函數前面加上符號“&” 動態調用函數 PHP允許變量和函數同名,如此,當變量后面有參數,PHP會嘗試調用與變量值相同的函數 如:$functionName='strlower' String = 'ABGG' $functionName($string); 變量的作用域 局部作用域 變量的作用是自己所在的花括號里{},但是在嵌套的花括號里不起作用 要想在嵌套花括號使用外面的變量,使用global $var 如 <?php $abc=123; function fun(){ global $abc; echo $abc; } ?> 只有加上global才能在fun里使用abc 全局作用域 只要定義的變量具有全局屬性,那么該變量都可以用'$GLOBAL['變量名字']'來訪問,不論在何時何地,具有全局屬性的變量通常指沒有在任何條件或一些結構下定義的變量。字符串 函數 int strlen(); 計算的是UTF-8編碼的字符串,其中的單個中文字的長度會被計算成3 int mb_strlen(); mb_str(string str[,string encoding]); 使用前必須確保在php.ini中加載了php_mbstring.dll string substr(string str,int start[, int length]) int strpos(string haystack,mixed needle[,int offset]); 返回在haystack中第一次出現的位置,如果找不到則返回一個FALSE array explode(string separator ,string str[,int limit]); string implode(string glue,array pieces); glue為合并數組元素成字符串時使用的連接符,pieces為需要合并的數組 string iconv (string in_charset,string out_charset,string str); 設置字符編碼時間和日期 string date(string $format[,int $timestamp]) 年 Y 1999 y 99 月 F January,February,March,April,May,June,July,August,September,October,November,December m 01-12 M Jan-Dec 日 d 00-31 D 星期:Mon-Sun N 星期:1-7 時間 H 小時:00-23 h 小時:01-12 g,G 小時:沒有前導零 i 分鐘:00-59 s 秒:00-59 函數: time() 返回時間戳 mktime() 生成指定日期時間的時間戳 指定的時間必須在2038年之前 time()-mktime() 可以用來計算年齡 checkdate() 檢測日期的合法性,參數為,月,日,年 如:checkdate(4,31,2010)//檢測2010年4月31日 修改php的默認時區 date_default_timezone_set() date_default_timezone_set('Asia/Shanghai'); date_default_timezone_set('PRC');//PRC 中華人民共和國的縮寫 使用微妙計算PHP腳本執行的時間 microtime();//返回時間戳和微妙數 帶參數才直接返回一個時間值浮點數圖像 (1)創建畫布 --資源類型-- 高度,寬度 (2)繪制圖像 制定各種顏色 矩形,圓,點,線段,扇形,字(字符,字符串,freetype), 每一個圖像對應一個函數 (3)輸出圖像或者保存已處理圖片, (4)釋放資源 一,畫圖 驗證碼,統計圖, 安裝GD庫 1,創建畫布 resource imagecreatetruecolor(width ,height) 注意,使用imagefttext()函數繪制字體時要將字體指定為utf-8格式,否則寫出來的是亂碼 imagefttext($resource,$fontsize,$degree,$x,$y,$color,$freetypefont,$string); 二,處理圖像 圖片縮放,加水印,電子相冊, 處理格式,GIF PNG JPG XPN,具體要看自己的服務器是否安裝了對應圖片的處理 支持字體:FreeType 裁剪,銳化,縮放,翻轉,旋轉,透明 一,創建資源 gif,jpg,png, imagecreatefromgif($filename); imagecreatefromjpeg($filename); 繪制各種圖形(圓形,矩形,線段,文字) 二,獲取圖片資源 $width = imagesx($image); $height = imagesy($image); $array = getimagesize($filename); 返回一個數組,數組的組成是,width,height,type, 索引 0 包含圖像寬度的像素值,索引 1 包含圖像高度的像素值。索引 2 是圖像類型的標記:1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF (intel byte order),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM。這些標記與 PHP 4.3.0 新加的 IMAGETYPE 常量對應。索引 3 是文本字符串,內容為'height='yyy' width='xxx'',可直接用于 IMG 標記。 三,透明處理 phg,jpeg透明色顯示正常,gif不正常 imagecolortransparent(); //將某個顏色定義為透明色 imagecolorstotal(); //取得調色板中的顏色數目 imagecolorsforindex(); 四,圖片的裁剪 imagecopyresized() imagecopyresampled() 五,加水印 文字水印 imagettftext(); 圖片水印 bool imagecopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h ); 將 src_im 圖像中坐標從 src_x,src_y 開始,寬度為 src_w,高度為 src_h 的一部分拷貝到 dst_im 圖像中坐標為 dst_x 和 dst_y 的位置上。 六,圖片的旋轉 imagerotate(); //用給定角度旋轉 resource imagerotate ( resource $image , float $angle , int $bgd_color [, int $ignore_transparent = 0 ] ) 七,圖片翻轉 沿y軸 沿x軸 思想:依然使用imagecopy()函數,顛倒著復制圖片 八,銳化 imagecolorsforindex(); imagecolorst(); 輸出圖片 imagegif(,圖像位置)//可以保存文件 imagepng() imagejpeg() 銷毀資源 imagedestroy($image); 三,開發驗證碼 imagecreatetruecolor($width,$height); //生成圖像資源 imagecolorallocate($image,reb); //生成顏色 imagefill($image,$color); //填充背景 imagerectangle($image,$xletftop,$yletftop,$xrightButtom,$yrightButtom,$color);//繪制外圍的矩形框 imagesetpixel($image,$x,$y,$color); //繪制干擾像素 imagechar($image,$size,$x,$y,$char,$color); //繪制字符 imagettftext($image,$fontsize,$x,$y,$color,$fontface,$text);//繪制特定字體的text imageshow(){header('Content-Type:image/gif');imagegif($image)};//輸出圖像,可以使是gif,jpeg,png等MD5加密與解密 MD5 md5($string) 簡單進行md5加密 Mcrypt 完成了對常用加密算法的封裝 需要在php.ini中打開extension=php_mcrypt.dll crypt 地窖,教堂地下室數組 PHP數組實際上是一個有序圖,圖是一種將values映射到keys的類型 三類: 數值數組 關聯數組 多維數組 創建 數值數組 1,$name=array('張三','李四','王五');數值數組存儲的沒有個元素都帶有一個數字標識鍵 2,$name[0]='zhangsan',$name[1]='li',$name[2]='wang' 關聯數組 1,$ages=array('zhagn'=>32,'li'=>43,'wang'=>34); 2,$ages['zhang']='32';$ages['li']='43';$ages['wang']='34'; 多維數組 $familly=array( 'brother'=>array('daming','xoiao','dsf'), 'sister'=>array('dsfas','sd'), 'uncle'=>array('sad','dss','dsgs','dsfs') ); 讀取 打印要用print_r($arrayName) add 通過賦值就能增加元素 如:$fruit=array('apple','banana'); 一種方式,$fruit[]='orange'; 另一種方式,$fruit['new']='orange'; delete 使用unset(), 例,unset($fruit[0]),如此就將apple元素刪除 使用array_push()壓入數組元素 使用array_pop()彈出數組元素 該函數彈出并返回array數組的最后一個元素,如果array為空或者不是數組,將返回NULL in_array($str,$array); 遍歷數組 print_r(); 可以使用<pre></pre>實現原格式輸出 print_r將把數組的指針移到最右邊,使用reset()可以讓指針回到開始處 foreach(); 可以使用$key=>輸出鍵,值 執行時,數組內部的指針會自動指向第一個單元,不需要在foreach之前調用reset(); for(); count函數可以計算出數組長度,便于循環遍歷 數組排序 sort 就地排序,即不返回任何數組,直接修改原始數組 自動重新設置鍵 rsort 逆序排序,也是就地排序 重置鍵 shuffle 隨機排序 用于打亂數組 會刪除原函數的鍵名,并自動生成 array_reverse() 將數組反向 只對第一維元素進行反向,如果第一維中還有數組,則將保持不變 鍵名不變 array_merge() 將一個或多個數組單元合并起來,一個數組中的值附加到前一個數組的后面 如果參加合并的數組有相同的鍵,則將按出現的先后順序進行覆蓋,后出現的數組覆蓋前面的數組 array_slice() 拆分數組 array array_slice(array arrayName,int offset[,int length[,bool preserve_keys]])文件 FileSystem basename(); 返回路徑中的文件名 chgrp(); 改變文件組 chmod(); 改變文件模式 chown(); 改變文件擁有者 copy(); 復制文件 delete(); 刪除文件 dirname(); 返回路徑中的目錄名稱部分 fflush(); 向打開的文件輸出緩沖內容 fgetss(); 從打開文件中讀取一行并過濾HTML和PHP標記 file(); 把文件讀入一個數組 file_exists() 文件是否存在 fileatime() 返回文件的上次訪問文件 filectime() 返回文件的上次改變時間 filemtime() 返回文件的上次修改時間 fileowner() 返回文件的所有者 fileperms() 返回文件的權限 filetype() 返回文件類型 is_dir() is_executable() is_file() is_link() is_readable() is_uploaded_file() is_writeable() realpath() 返回絕對路徑 rename() rmdir 刪除空的記錄 stat() 返回關于文件的信息 umask() 改變文件的文件權限 文件 函數 fopen(); 打開一個文件, <?php $myfile = fopen('webdictionary.txt', 'r') or die('Unable to open file!'); echo fread($myfile,filesize('webdictionary.txt')); fclose($myfile); ?> fopen() 函數也用于創建文件。也許有點混亂,但是在 PHP 中,創建文件所用的函數與打開文件的相同。 fwrite(); 寫文件;第一個參數是文件名,第二個是待寫的字符串 readfile(); 讀一個文件,返回字節數; fread(); fread() 的第一個參數包含待讀取文件的文件名,第二個參數規定待讀取的最大字節數。 filesize(); 返回文件大小 fgers(); 讀取一行 fgetc(); 讀取單個字符 feof(); 檢查是否是文件結尾; fclose(); 關閉文件 目錄 遍歷目錄 mkdir() opendir() 打開一個目錄資源 readdir() 利用opendir打開的資源 closedir() 關閉資源 rewinddir() 返回目錄的開始處,即第一個文件GD Graphics Draw 創建一個圖像的4個步驟 ·創建一個背景,以后的操作都基于這個背景 ·在圖像上繪圖輪廓或者輸入文本 ·輸出最終圖形 ·清除內存中所有的資源瀏覽器和輸入輸出 檢測來訪者的瀏覽器版本和語言 $_SERVER 特殊的PHP保留變量,它包含了WEB服務器提供的所有信息,被稱為自動全局變量(或超全局變量) 數組鍵: HTTP_USER_AGENT 瀏覽器版本信息 HTTP_ACCEPT_LANGUAGE 客戶端系統語言 處理表單提交的數組 $_POST $_GET $_REQUEST 上傳文件 1 單文件上傳 2 多文件上傳 一,上傳表單的注意事項 二,PHP配置文件中和上傳文件有關的選項 file_uploads=on upload_max_filesize = 2M ;最大不超過系統內存 upload_tmp_dir = '' 上傳文件的臨時路徑 upload_max_size = 250M 必須要大于upload_max_filesize = 2M 三,PHP處理上傳數據 method='POST';get最大為8192K 表單上傳需要使用file的type 建議添加一個隱藏表單 MAX_FILE_SIZE,值的單位是字節 要確保文件上傳表單的屬性是enctype='multipart/form-data' $_FILES['userfile']['name'] 客戶端機器文件的原名稱 $_FILES['userfile']['type'] 文件的MIME類型 $_FILES['userfile']['size'] 文件的大小 $_FILES['userfile']['tmp_name'] 文件被上傳后在服務器端存儲的臨時文件名 $_FILES['userfile']['error'] 和該文件上傳相關的錯誤代碼。 文件被上傳后,默認的會被存儲在服務器的默認臨時目錄中,除非php.ini中的upload_tmp_dir設置為其他的路徑。服務器端的默認臨時目錄可以通過更改PHP運行環境的環境變量TMPDIR來重新設置,但是自PHP腳本內部通過運行putenv函數來設置時不起作用的。 bool move_uploaded_file(string filename,string destination) 檢查并確保由filename指定的文件時一個合法的文件(即是由POST機制上傳的文件),合法,則移動到destination,若存在了該文件,則覆蓋;若不合法。則返回false //step1 // 使用$_FILES['filename']['error'] 檢查錯誤 // if($_FILES['filename']['error'] > 0){ // switch($_FILES['filename']['error']){ // case 1: // 超過php.ini中規定的最大文件值 // break; // case 2: // 超過了HTML隱藏表單規定的文件大小 // case 3: // 只有部分上傳 // case 4: // 沒有文件被上傳 // default: // // } // // } //step2 // 使用$_FILES['filename']['size'] 限制大小單位字節 //step3 // 使用$_FILES['filename']['type'] 限制類型 MIME類型 ,形如image/jpg // list($dl,$xl) = explode('/',$_FILES['filename']['type']); // 對于圖片而言,gd庫只能處理一些類型圖片,如,png,jpd,gif,故要用到圖片過濾 // 也可以使用 //step4 // 將上傳后的文件名改名 // is_uploaded_file();判斷是否通過HTTP POST上傳的 // if(is_uploaded_file($_FILES['userfile']['tmp_name'])){ // if(move_uploaded_file($_FILES['userfile']['tmp_name'],'destination')){ // echo '上傳成功'; // } // } // rand(start,end);//可以用來隨機化文件名 會話處理函數session Session指的就是用戶在瀏覽某個網站時,從進入網站到關閉這個網站所經過的這段時間,也就是用戶瀏覽這個網站所花費的時間。 一個Session的概念需要包括特定的客戶端,特定的服務器端以及不中斷的操作時間。A用戶和C服務器建立連接時所處的Session同B用戶和C服務器建立連接時所處的Session是兩個不同的Session。 session的工作原理 (1)當一個session第一次被啟用時,一個唯一的標識被存儲于本地的cookie中。 (2)首先使用session_start()函數,PHP從session倉庫中加載已經存儲的session變量。 (3)當執行PHP腳本時,通過使用session_register()函數注冊session變量。 (4)當PHP腳本執行結束時,未被銷毀的session變量會被自動保存在本地一定路徑下的session庫中,這個路徑可以通過php.ini文件中的session.save_path指定,下次瀏覽網頁時可以加載使用。 開始會話 session_start()必須位于<html>標簽之前,也就是說該函數必須在任何輸出之前調用。常常寫程序時不注意會多輸入一個空格或回車,這時都會出錯。 無論如何,調用session_start()函數都會返回一個TRUE,因此使用任何異常處理都不起作用 存儲和讀取會話 正確的使用功能方法是使用PHP的$_SESSION變量。$_SESSION是PHP提供的一個全局參數,要你過來存儲和讀取會話 $_SESSION關聯數組中的鍵名具有和PHP中普通變量名相同的規則,即不能以數字開頭,必須以字母或下劃線開頭。 header('Location:**.php');//跳轉到某個頁面 銷毀會話 unset() Cookies處理函數 創建cookie 函數setcookie()可以再PHP程序中生成cookie,由于cookie是HTTP投標部分的內容,一次不許再輸出任何數據之前調用setcoookie(),這個限制和函數hearder()類似。 bool setcookie(string name,[,.string value[,int expire[,string path[,string domain[,bool secure[,bool htttponly]]]]]]) 六個參數: name:表示cookie的名稱。 value: 表示該cookie的值,保存在客戶端,因此不要曹村敏感機密的數據。這個參數為空字符串時目標是撤銷客戶端中該cookie的資料。 expire : 表示該cookie有效的截止時間,及過期時間 path: 表示該cookie的有效的路徑 domain:表示該cookie的有效的域名 secure:表示在https 的安全傳輸時才有效 例<?php setcookie('testcookie','llovephp')?> 獲取cookie: $_COOKIE來獲取cookie,不過,只能在其他頁面使用這個變量來獲取設置過的cookie,因為PHP中,被設置的cookie并不會在本頁生效,除非該頁面被刷新。 刪除cookie: setcookie('cookiename',''); 只要value的值為空,則意味著刪除這個cookie Headers 標頭是服務器以HTTP協議傳HTML資料到瀏覽器前所送出的字符串,在標頭與HTML文件之間上需要空一行分隔。 在PHP傳送回HTML資料前,需要先傳完所有的標頭 ·Content-Type: xxxx/yyyy ·Location:xxxx:yyyy/zzzz ·Status:nnn xxxxx PHP提供header()函數用來將HTML文檔的標頭以HTTP協議發送至瀏覽器,告訴瀏覽器該如何處理這個頁面。 header(string $str_header); 在調用header函數之前不能有任何的輸出,否則程序將會出錯 用法: 1,重定向 header('Location:http://www.example.com/');//重定向網站 2,限制某一頁不能被訪問 header('status: 404 Not Found'); 3,欲讓用戶得到最新的資料PHP編程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答