PHP最全筆記(三)(值得收藏,不時翻看一下)

/* 【數組函數】 */

//統計計算

count????????計算數組中的單元數目或對象中的屬性個數

array_count_values??統計數組中所有的值出現的次數

array_product???????計算數組中所有值的乘積

array_sum???????????計算數組中所有值的和

range????????建立一個包含指定范圍單元的數組

array_chunk????????將一個數組分割成多個

array?array_chunk(array?$input,?int?$size[,?bool?$preserve_keys])?array_filter????用回調函數過濾數組中的單元array_slice?????從數組中取出一段

array?array_slice($arr,?$offset?[,$len?[,$preserve_keys]])array_keys????????返回數組中所有的鍵名

array?array_keys(array?$input[,?mixed?$search_value[,?bool?$strict]]?)

如果指定了可選參數?search_value,則只返回該值的鍵名。否則input數組中的所有鍵名都會被返回。array_values????返回數組中所有的值,并建立數字索引

array_merge合并一個或多個數組

一個數組中的值附加在前一個數組的后面。

如果輸入的數組中有相同的字符串鍵名,則該鍵名后面的值將覆蓋前一個值。

如果數組包含數字鍵名,后面的值將不會覆蓋原來的值,而是附加到后面。

如果只給了一個數組并且該數組是數字索引的,則鍵名會以連續方式重新索引。array_merge_recursive遞歸地合并一個或多個數組

//搜索

in_array檢查數組中是否存在某個值

boolin_array(mixed$needle,array$haystack[, bool$strict])array_key_exists檢查給定的鍵名或索引是否存在于數組中

isset()對于數組中為NULL的值不會返回TRUE,而array_key_exists()會array_search在數組中搜索給定的值,如果成功則返回相應的鍵名

array_combine創建一個數組,用一個數組的值作為其鍵名,另一個數組的值作為其值

如果兩個數組的單元數不同或者數組為空時返回FALSE。array_rand從數組中隨機取出一個或多個單元,返回鍵名或鍵名組成的數組,下標是自然排序的

array_fill用給定的值填充數組

array_fill($start,$num,$value)array_flip交換數組中的鍵和值array_pad用值將數組填補到指定長度array_reverse返回一個單元順序相反的數組array_unique移除數組中重復的值array_splice把數組中的一部分去掉并用其它值取代

implode將數組元素值用某個字符串連接成字符串explode($delimiter,$str[,$limit])//使用一個字符串分割另一個字符串

$delimiter不能為空字符串""

array_map將回調函數作用到給定數組的單元上,只能處理元素值,可以處理多個數組

如果callback參數設為null,則合并多個數組為一個多維數組

array_walk對數組中的每個成員應用用戶函數,只能處理一個數組,鍵和值均可處理,與foreach功能相同

boolarray_walk(array&$array,callback$funcname[,mixed$userdata] )

//棧:

后進先出入棧和出棧會重新分配索引下標array_push將一個或多個單元壓入數組的末尾(入棧)array_pop將數組最后一個單元彈出(出棧)使用此函數后會重置(reset())array指針。

//隊列:

先進先出隊列函數會重新分配索引下標array_unshift在數組開頭插入一個或多個單元array_shift將數組開頭的單元移出數組使用此函數后會重置(reset())array指針。

//排序函數

sort對數組排序rsort對數組逆向排序asort對數組進行排序并保持索引關系arsort對數組進行逆向排序并保持索引關系ksort對數組按照鍵名排序krsort對數組按照鍵名逆向排序usort使用用戶自定義的比較函數對數組中的值進行排序uksort使用用戶自定義的比較函數對數組中的鍵名進行排序uasort使用用戶自定義的比較函數對數組中的值進行排序并保持索引關聯natsort用用“自然排序”算法對數組排序natcasesort用“自然排序”算法對數組進行不區分大小寫字母的排序array_multisort對多個數組或多維數組進行排序shuffle將數組打亂

引用傳遞參數,返回bool值。

重新賦予索引鍵名,刪除原有鍵名

//差集

array_udiff_assoc帶索引檢查計算數組的差集,用回調函數比較數據array_udiff_uassoc帶索引檢查計算數組的差集,用回調函數比較數據和索引array_udiff用回調函數比較數據來計算數組的差集array_diff_assoc帶索引檢查計算數組的差集

array_diff_key使用鍵名比較計算數組的差集array_diff_uassoc用用戶提供的回調函數做索引檢查來計算數組的差集

array_diff_ukey用回調函數對鍵名比較計算數組的差集array_diff計算數組的差集//交集array_intersect_assoc帶索引檢查計算數組的交集

array_intersect_key使用鍵名比較計算數組的交集array_intersect_uassoc帶索引檢查計算數組的交集,用回調函數比較索引

array_intersect_ukey用回調函數比較鍵名來計算數組的交集array_intersect計算數組的交集array_key_exists用回調函數比較鍵名來計算數組的交集array_uintersect_assoc帶索引檢查計算數組的交集,用回調函數比較數據array_uintersect計算數組的交集,用回調函數比較數據

extract($arr[,$type[,$prefix]])從數組中將變量導入到當前的符號表(接受結合數組$arr作為參數并將鍵名當作變量名,值作為變量的值)compact($var[,...])建立一個數組,包括變量名和它們的值(變量名成為鍵名而變量的內容成為該鍵的值)

/*【偽類型】*/

mixed說明一個參數可以接受多種不同的(但并不必須是所有的)類型。number說明一個參數可以是integer或者float。callback回調函數

void ???????void作為返回類型意味著函數的返回值是無用的。

void作為參數列表意味著函數不接受任何參數。

/*【數據庫操作】*/

#連接認證mysql_connect連接并認證數據庫#發送SQL語句,接收執行結果mysql_query發送SQL語句

僅對select, show, explain, describe語句執行成功返回一個資源標識符,其他語句成功返回true。執行失敗均返回false。#處理結果mysql_fetch_assoc從結果集中取得一行作為關聯數組

每次只取回一條,類似each

結果集中記錄指針mysql_fetch_row從結果集中取得一行作為枚舉數組mysql_fetch_array從結果集中取得一行作為關聯數組,或數字數組,或二者兼有

arraymysql_fetch_array(resource$result[, int $ result_type ?] )

可選參數result_type可選值為:MYSQL_ASSOC,MYSQL_NUM和MYSQL_BOTH(默認)mysql_free_result釋放結果內存#關閉鏈接mysql_close關閉連接

/*【類和對象】*/

#成員:類成員:類常量、靜態屬性、靜態方法

對象成員:非靜態屬性、非靜態方法

#除此外,類不能包含任何其他東西!!!

#類名、方法名、屬性名均不區分大小寫

# $this代表本對象,self代表本類,parent代表父類

#類和函數均可被事先編譯(僅作為最外層時)

#類的定義必須在單一的PHP區塊內,不能被多個PHP標簽分割

//構造方法

-具有構造函數的類會在每次創建新對象時先調用此方法

void __construct([mixed$args[, $... ]] )-構造方法所需參數由new實例化對象時,給類增加參數值。-構造方法也可以被手動調用。- 5.3.3版本以前,支持于類名同名的方法作為構造方法。-兩種沖突時,__construct優先

//析構方法

-析構函數會在到某個對象的所有引用都被刪除或者當對象被顯式銷毀時執行。

void __destruct( void )#作用:釋放對象所占用的資源

#調用的時機

-腳本結束時所有資源均被釋放,包括對象

-手動刪除對象時

-保存對象的變量被賦予新值時(任何值,包括null)

-在使用exit()終止腳本運行時也會被調用

//靜態成員(static關鍵字)

-聲明類成員或方法為static,就可以不實例化類而直接訪問。

-靜態成員(屬性或方法)均屬于類,故不能通過$this或->訪問。

-靜態成員是所有對象共享,屬于類。

-靜態成員用類調用,非靜態成員用對象調用。#靜態屬性

-靜態屬性不可以由對象通過->操作符來訪問。

-靜態屬性只能被初始化為一個字符值或一個常量,不能使用表達式。 所以你可以把靜態屬性初始化為整型或數組,但不能指向另一個變量或函數返回值,也不能指向一個對象。#靜態方法

-由于靜態方法不需要通過對象即可調用,所以偽變量$this在靜態方法中不可用。

-用::方式調用一個非靜態方法會導致一個E_STRICT級別的錯誤。

//訪問解析操作符(::)

-可以用于訪問靜態成員、方法和常量,還可以用于覆蓋類中的成員和方法。

-當在類的外部訪問這些靜態成員、方法和常量時,必須使用類的名字。

- self和parent這兩個特殊的關鍵字是用于在類的內部對成員或方法進行訪問的。

//訪問辨析

-對象成員,內部通過$this指定,外部通過對象名指定,均用->訪問,訪問屬性時不需加$。

對象名->屬性名 ???對象名->方法名()$this->屬性名$this->方法名()-類成員,內部通過self或parent指定,外部通過類名指定,均用::訪問,訪問屬性時需加$。

類名::$屬性名類名::方法名() ???????self::$屬性名self::方法名()-特殊:也可以通過對象訪問類成員。(不建議)

對象名::$類屬性名$this::$類屬性名對象名::$類方法名()$this::類方法名()#對象成員訪問用->,類成員訪問用::

-無論是靜態方法還是非靜態方法,均可通過類或對象進行訪問。-靜態屬性通過類訪問,靜態方法通過對象訪問。-只有使用對象調用非靜態方法時,$this才可以使用!-靜態方法不可使用$this。-類可以調用對象方法,但注意方法內不能有$this。-非靜態方法可以調用靜態屬性或靜態方法,反之不可以。

//類常量

-常量的值將始終保持不變。-在定義和使用常量的時候不需要使用$符號。-常量的值必須是一個定值,不能是變量,類屬性或其它操作(如函數調用)的結果。#定義:const常量名=常量值;

-不需要加public等訪問修飾限定符-類常量屬于類,使用類訪問,類名::類常量 或self::類常量

//自動加載對象

-在試圖使用尚未被定義的類時自動調用__autoload函數-自動加載使用到的類名文件(根據類名找相應名稱的文件,故需類名與類文件名一致)-每個需要加載類的文件都需要存在__autoload函數-將__autoload函數寫入單獨的文件,每個需要用到類的文件再require該函數文件- __autoload參數是類名function__autoload($class_name) {

require_once$_SERVER["DOCUMENT_ROOT"] . "/class/$class_name.php";

}

// $_SERVER["DOCUMENT_ROOT"]當前運行腳本所在的文檔根目錄

-可以通過類名,來推導出類所在的文件名!-如果一個項目存在多個自動加載函數時,定義一個可以完成加載的普通函數,并在函數之前使用spl_autoload_register注冊該函數。# spl_autoload_register

-注冊__autoload()函數

bool spl_autoload_register ([callback$autoload_function] )-可以注冊多個自動加載函數,先注冊的先執行-一旦注冊自動加載函數,__autoload就失效。-注冊函數時,參數為函數名(注意加引號);注冊方法時,參數為數組#注冊類或對象的方法為自動加載方法時,參數需為數組:

spl_autoload_register(array(__CLASS__, '__autoload'));

__CLASS__表示當前類名,若是對象可用$this,詳細見手冊

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • * 【goto】5.3+ 版本 */ 用來跳轉到程序中的某一指定位置 該目標位置可以用目標名稱加上冒號來標記。 P...
    Omit03閱讀 555評論 0 0
  • PHP常用函數大全 usleep() 函數延遲代碼執行若干微秒。 unpack() 函數從二進制字符串對數據進行解...
    上街買菜丶迷倒老太閱讀 1,382評論 0 20
  • php usleep() 函數延遲代碼執行若干微秒。 unpack() 函數從二進制字符串對數據進行解包。 uni...
    思夢PHP閱讀 2,002評論 1 24
  • 第5章 引用類型(返回首頁) 本章內容 使用對象 創建并操作數組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,270評論 0 4
  • 真的不知道個該說什么,總覺得自己要說的話很多。可是明明想記錄下來卻不知如何動筆。雖然已經過了愛做夢的年紀,可是我不...
    Koreyoshi陌閱讀 290評論 0 0