日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

PHP(三)——PHP基础知识

發(fā)布時(shí)間:2023/12/15 php 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP(三)——PHP基础知识 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

PHP基礎(chǔ)語(yǔ)法

  • PHP在HTML中的嵌入,允許四種類型

    • <?php 和 ?>,只要支持PHP語(yǔ)言的服務(wù)器。
    • <? 和 ?>,需將php.ini文件中的short_open_tag的值設(shè)為on。
    • <script language ="php"> 和 </script>
    • <% 和 %>,在PHP3.0.4及其以上版本,需將php.ini文件中的asp_tags的值設(shè)為on。
  • 三種注釋方法

    1
    2
    3
    4
    5
    6
    //注釋內(nèi)容...
    # 注釋內(nèi)容...
    /*
    多行注釋
    注釋內(nèi)容...
    */
  • 輸出命令

    • echo:無(wú)返回值,不能用于復(fù)雜語(yǔ)句。
    • print:有返回值,負(fù)責(zé)為用戶提供反饋,能顯示原始字符串和變量,提供與echo相同的功能,且比echo語(yǔ)句更強(qiáng)大。
    • print_r
  • 區(qū)分大小寫(xiě)
    • 區(qū)分大小寫(xiě)的時(shí)候
      • 變量名
      • 常量名,通常寫(xiě)成大寫(xiě)
    • 不區(qū)分大小寫(xiě)的時(shí)候
      • 函數(shù)名、方法名、類名,在調(diào)用時(shí)盡量使用和定義時(shí)相同的名字;
      • 魔術(shù)常量不區(qū)分大小寫(xiě),如 LINEFUNCTION等;
      • NULL,TRUE,FLASE不區(qū)分;
      • 類型轉(zhuǎn)換時(shí),如(string) 和(STRING)是相同的;

數(shù)據(jù)類型

數(shù)據(jù)類型是語(yǔ)言最為基礎(chǔ)的部分,它是高級(jí)語(yǔ)言抽象出來(lái)的一個(gè)概念,對(duì)于低級(jí)語(yǔ)言(機(jī)器語(yǔ)言)沒(méi)有這個(gè)概念。對(duì)于CPU、內(nèi)存而言,并沒(méi)有數(shù)據(jù)類型之分,數(shù)據(jù)是沒(méi)有差別的,高級(jí)語(yǔ)言的數(shù)據(jù)類型為內(nèi)存中的數(shù)據(jù)指定了特定的計(jì)算方式。

數(shù)據(jù)類型的產(chǎn)生使得程序的編寫(xiě)更加規(guī)范、簡(jiǎn)潔和靈活。

  • 數(shù)據(jù)類型:
    • 標(biāo)量類型:字符串、整型、浮點(diǎn)型和布爾型;
      • boolean(或?yàn)閎ool)
      • integer(或?yàn)閕nt)
      • float
      • string
    • 復(fù)合類型:數(shù)組和對(duì)象;
      • array
      • object
    • 特殊類型:資源和NULL
  • 數(shù)據(jù)類型的方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // 判斷數(shù)據(jù)類型的方法
    is_bool()/is_int()/is_float()/is_string()/is_array()/is_object()
    // 數(shù)據(jù)類型的轉(zhuǎn)換方式
    // 在變量前加上用括號(hào)括起來(lái)的數(shù)據(jù)類型
    (int)/?(bool)/?(float)/?(string)/?(array)/?(object)
    // 使用3個(gè)具體類型的轉(zhuǎn)換函數(shù)
    intval()/floatval()/strval()
    // 使用函數(shù)?
    settype(var, type)
    // 判斷變量是否為數(shù)字或者數(shù)字組成的字符串。
    is_numeric()

    注意:如果給定的數(shù)超過(guò)了int的范圍,將會(huì)解釋為float,同樣,如果執(zhí)行的運(yùn)算結(jié)果超過(guò)int范圍,也會(huì)返回float。

  • 進(jìn)制表示

    1
    2
    3
    4
    $a = 123;//十進(jìn)制數(shù)?
    $a = 0123;//八進(jìn)制數(shù)?
    $a = 0x1A;//十六進(jìn)制數(shù)?
    $a = 0b11111111;//二進(jìn)制數(shù)字
  • 字符串中特殊字符

    字符形式 | 功能
    —|—
    \n | 換行且歸0
    \br | 換行
    \t | 跳格
    \’ | 單引號(hào)
    \” | 雙引號(hào)
    \$ | $符號(hào)
    \r | 回車

  • NULL:表示變量沒(méi)有值,下列情況變量被認(rèn)為是NULL:

    • 被賦值為NULL;
    • 尚未被賦值;
    • 被unset()。

      NULL大小寫(xiě)敏感。

變量

  • 定義:變量可以看做是一個(gè)容器,先給容器取個(gè)名字,然后利用賦值運(yùn)算符給這個(gè)容器裝上內(nèi)容。變量是最常見(jiàn)的數(shù)據(jù)類型應(yīng)用形式,主要由變量名、變量值和變量類型三部分組成。

  • 內(nèi)部實(shí)現(xiàn):PHP中變量名與變量可以簡(jiǎn)單地對(duì)應(yīng)為zval和zend_value。PHP通過(guò)zval結(jié)構(gòu)體來(lái)表示一個(gè)變量,不同類型的變量值則通過(guò)zval內(nèi)嵌入一個(gè)聯(lián)合體表示,即zend_value。通過(guò)zval、zend_value及不同類型的結(jié)構(gòu)實(shí)現(xiàn)了PHP基礎(chǔ)的數(shù)據(jù)類型。

    zval的作用:(1)PHP變量;(2)統(tǒng)一函數(shù)的參數(shù)

  • 變量的命名規(guī)則

    • 必須以$符號(hào)開(kāi)頭;
    • 第二個(gè)字符必須是字母或者下劃線;
    • 第二個(gè)字符以后的可以是字符數(shù)字等的任意組合。
  • 默認(rèn)變量

變量名意義
PHP_SELF目前執(zhí)行的文件名稱
SERVER_NAME服務(wù)器名
SERVER_SOFTWARE服務(wù)器軟件
DOCUMENT_ROOT文檔的根目錄
HTTP_USER_AGENT用戶相關(guān)信息
REMOTE_ADDR遠(yuǎn)程用戶的地址
REMOTE_PORT遠(yuǎn)程用戶的連接端口

在取得變量?jī)?nèi)容時(shí),以變量名稱為數(shù)組指針即取得信息。例如SERVER_NAME可以用$_SERVER[‘SERVER_NAME’]取得信息。

常量

  • 定義:常量就是簡(jiǎn)單值的標(biāo)識(shí)符(名字),代替一個(gè)有意義的值。常量如同其名稱所暗示的,在程序執(zhí)行期間該值不能改變。PHP的變量包含兩種:一種默認(rèn)常量,另一種的自定義常量。

  • 默認(rèn)常量

變量名意義
_FILE_當(dāng)前正在分析著的腳歐諾個(gè)在分析一個(gè)被include或require包含的文件,則該常數(shù)給出的是include所包含的文件名,而不是當(dāng)前文件名。
_LINE_當(dāng)前正在分析著的行在腳本的行數(shù)。如果用在一個(gè)被include或require的文件中,則該常數(shù)給出的是(行)在被include包含的文件中的位置。
PHP_VERSION一個(gè)描述當(dāng)前用著的PHP處理器的版本的字符串
PHP_OS正在運(yùn)行本PHP處理器的操作系統(tǒng)的名字
TRUE真值
FALSE假值
E_ERROR指示一個(gè)不可恢復(fù)的語(yǔ)法錯(cuò)誤
E_WARNING指示如下一種狀態(tài):PHP指導(dǎo)某處出錯(cuò)了,但仍可以繼續(xù)運(yùn)行;這些錯(cuò)誤能被腳本自身捕獲
E_PARSEPHP在腳本的一個(gè)語(yǔ)病中被阻塞,不可恢復(fù)
E_NOTICE出現(xiàn)了可能是一個(gè)錯(cuò)誤也可能不是的情況:(這種情況下)運(yùn)行會(huì)繼續(xù)

這些系統(tǒng)變量可以幫助我們很好地了解系統(tǒng)當(dāng)前的情況,而且這些常量可以隨時(shí)調(diào)用。

  • 自定義常量:通過(guò)define('name',number)函數(shù)自定義需要的常量。

運(yùn)算符及表達(dá)式

  • 算術(shù)運(yùn)算符
運(yùn)算符名稱結(jié)果
$a + $b加法$a 和 $b 的和
$a - $b減法$a 和 $b 的差
$a * $b乘法$a 和 $b 的積
$a / $b除法$a 除以 $b 的商
$a % $b取模$a 除以 $b 的余數(shù)
++$a前加$a 的值加一,然后進(jìn)行操作
$a++后加$a 的值先進(jìn)行操作,后加一
–$a前減$a 的值減一,然后進(jìn)行操作
$a–后減$a 的值先進(jìn)行操作,后減一
  • 比較運(yùn)算符
運(yùn)算符名稱結(jié)果
$a == $b等于TRUE,如果$a等于$b
$a === $b全等TRUE,如果$a等于$b,并且它們的類型也相同
$a != $b不等TRUE,如果$a不等于$b
$a <> $b不等TRUE,如果$a不等于$b
$a !== $b非全等TRUE,如果$a不等于$b,或者它們的類型不同
$a < $b小于TRUE,如果$a嚴(yán)格小于$b
$a > $b大于TRUE,如果$a嚴(yán)格$b
$a <= $b小于等于TRUE,如果 $a 小于或等于$b
$a >= $b大于等于TRUE,如果 $a 大于或等于$b

另外一個(gè)條件運(yùn)算符是“ ? : ”(或三元)運(yùn)算符。

  • 邏輯運(yùn)算符
運(yùn)算符名稱結(jié)果
$a and $b邏輯與TRUE,如果 $a 與 $b 都為 TRUE。
$a or $b邏輯或TRUE,如果 $a 或 $b 任一為TRUE。
$a xor $b異或TRUE,如果 $a 和 $b 不同時(shí)
! $a邏輯非TRUE,如果 $a 不為 TRUE。
$a && $b邏輯與TRUE,如果 $a 與 $b 都為TRUE。
$a$b邏輯或TRUE,如果 $a 或 $b 任一為TRUE。

其中and與&& 、or與||是同一邏輯運(yùn)算符的兩種寫(xiě)法。

  • 位運(yùn)算符

    位運(yùn)算符允許對(duì)整型數(shù)中指定的位進(jìn)行置位。如果左右參數(shù)都是字符串,則位運(yùn)算符將操作字符的 ASCII 值。

表達(dá)式名稱結(jié)果
$a & $b按位與將把 $a 和 $b 中都為 1 的位設(shè)為 1。
$a$b按位或將把 $a 或者 $b 中為 1 的位設(shè)為 1。
$a ^ $b按位異或將把 $a 和 $b 中不同的位設(shè)為 1。
~ $a按位非將 $a 中為 0 的位設(shè)為 1,反之亦然。
$a << $b左移將 $a 中的位向左移動(dòng) $b 次(每一次 移動(dòng)都表示“乘以 2”)。
$a >> $b右移將 $a 中的位向右移動(dòng) $b 次(每一次 移動(dòng)都表示“除以 2”)。
  • 字符串運(yùn)算符

    • 連接運(yùn)算符(“.”),它返回其左右參數(shù)連接后的字符串。
    • 連接賦值運(yùn)算符(“.=”),它將右邊參數(shù)附加到左邊的參數(shù)后。
  • 錯(cuò)誤抑制操作符

    • 在最常見(jiàn)的數(shù)據(jù)庫(kù)連接與文件創(chuàng)建操作或出現(xiàn)除0等異常時(shí),可以用@符號(hào)來(lái)抑制函數(shù)錯(cuò)誤信息輸出到瀏覽器端 $a=@(5/0)
    • 外部命令執(zhí)行 ,使用``來(lái)運(yùn)行外部系統(tǒng)命令,注意不是單引號(hào),是ESC下面那個(gè)按鍵

常用的控制流

if語(yǔ)句

  • 簡(jiǎn)單的if語(yǔ)句

    1
    2
    3
    if(判斷語(yǔ)句) {
    執(zhí)行語(yǔ)句體;
    }
  • if…else語(yǔ)句

    1
    2
    3
    4
    5
    if(判斷語(yǔ)句) {
    執(zhí)行語(yǔ)句體1;
    } else {
    執(zhí)行語(yǔ)句體2;
    }
  • 嵌套if…else語(yǔ)句

    1
    2
    3
    4
    5
    6
    if(判斷語(yǔ)句) {
    執(zhí)行語(yǔ)句體1;
    } else if(判斷語(yǔ)句2) {
    執(zhí)行語(yǔ)句體2;
    } else if...
    else...

switch語(yǔ)句(多分支選擇性語(yǔ)句)

  • 表達(dá)式:

    1
    2
    3
    4
    5
    6
    switch(表達(dá)式) {
    case 1: 執(zhí)行語(yǔ)句體1;break;
    case 2: 執(zhí)行語(yǔ)句體2;break;
    ...
    default:執(zhí)行語(yǔ)句體n;break;
    }

    switch后面括號(hào)內(nèi)的表達(dá)式,可以是整型表達(dá)式或字符型表達(dá)式,也已是枚舉型數(shù)據(jù)。表達(dá)式的值與case語(yǔ)句后面的值逐個(gè)進(jìn)行匹配,如果匹配得上,就執(zhí)行case語(yǔ)句后面執(zhí)行語(yǔ)句體,然后通過(guò)break跳出該循環(huán)。如果最終沒(méi)有case語(yǔ)句匹配的表達(dá)式,則執(zhí)行default后面的執(zhí)行語(yǔ)句體。(default后面可以不加break)。

while循環(huán)

  • while語(yǔ)句

    1
    2
    3
    while(判斷語(yǔ)句) {
    執(zhí)行體語(yǔ)句;
    }
  • do…while語(yǔ)句

    1
    2
    3
    do {
    執(zhí)行體語(yǔ)句;
    }while(判斷語(yǔ)句)

for循環(huán)

  • for語(yǔ)句

    1
    2
    3
    for(表達(dá)式1,表達(dá)式2,表達(dá)式3) {
    執(zhí)行語(yǔ)句體;
    }

break、continue語(yǔ)句

  • break:具有結(jié)束、中斷整個(gè)循環(huán)的作用,可以被用到for、do…while等循環(huán)中,起到結(jié)束循環(huán)的作用。實(shí)際上break語(yǔ)句還可以用來(lái)從循環(huán)體內(nèi)跳出循環(huán),即提前結(jié)束循環(huán),接著執(zhí)行其他語(yǔ)句。

  • continue:起到結(jié)束本次循環(huán),執(zhí)行下次循環(huán)的作用。

常用函數(shù)

輸出函數(shù)

1
2
3
4
5
6
echo() //【語(yǔ)言結(jié)構(gòu)】
print() //【語(yǔ)言結(jié)構(gòu)】【有返回值】,若傳輸失敗導(dǎo)致沒(méi)有輸出,它返回false
var_dump()
var_export() //【有返回值,翻譯一個(gè)合法的PHP代碼】
printf() //類似與C語(yǔ)言的形式 printf("my name is %s, age %d", $name, $age);,打印出來(lái)
sprintf() //跟printf相似,但不打印,而是返回格式化后的文字,其他的與printf一樣

數(shù)組函數(shù)

  • 排序類

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    // 按V,按元素值
    sort
    rsort
    asort
    arsort

    //按K,按鍵值
    ksort
    krsort

    //按字母
    natsort(); //區(qū)分大小寫(xiě)的排序
    natcasesort(); //不區(qū)分大小寫(xiě)的排序,

    // 回調(diào)
    usort($arr,"strnatcmp")//回調(diào)類的排序,把$arr數(shù)組里的每一個(gè)元素丟到strnatcmp()[非自然數(shù)排序]處理【返回新的排序數(shù)組】

    規(guī)律:

    • 沒(méi)有”k”,排序按照【value】排序,排序有”a”的表示要保留KEY,有”r”的倒序排
    • 有“k”,排序按照【KEY】排序,有”r”的倒序排
    • 有”u”的,表示要丟到回調(diào)函數(shù)中處理的
  • 鍵值操作

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    array_values($arr);//獲取$arr中的值重排,去掉下標(biāo)【返回值新索引數(shù)組】
    array_keys($arr[,"str",true])//獲取$arr中所有字符是"str"的下標(biāo),形成索引數(shù)組,true表示區(qū)分大小寫(xiě)【返回新索引數(shù)組】

    array_search("is",$arr[,true]) //返回值"is"在$arr中的key,找不到返回fales,true表示嚴(yán)格按照類型(8,"8")【返回第一個(gè)匹配值】

    in_array("str",$arr);//判斷"str"在$arr中是否存在,【返回BOOL】
    is_array($arr);//判斷是否是數(shù)組【返回BOOL】
    array_key_exists($key,$arr); //查詢$arr中是否有$key,【返回BOOL】

    array_flip($arr);// 交換鍵值,如有重復(fù),后來(lái)居上,【返回新數(shù)組】
    array_reverse($arr,[true|false]);//數(shù)組順序反轉(zhuǎn),param2是否保留原來(lái)鍵值【返回新關(guān)聯(lián)/索引數(shù)組】

    array_column(array(),'name'[,name_two]) — 返回?cái)?shù)組中指定的name列[可選參數(shù),如果有返回name=>name_two的形式]【返回一維數(shù)組】
  • 元素個(gè)數(shù)和唯一性

    1
    2
    3
    4
    array_unique($arr);//去掉$arr中的重復(fù)值,重復(fù)的保留第一個(gè)值,【返回?cái)?shù)組,鍵值保留】

    array_count_values($arr)//統(tǒng)計(jì)數(shù)組值出現(xiàn)的次數(shù),【返回?cái)?shù)組,KEY為原來(lái)數(shù)組的值,VALUE為統(tǒng)計(jì)的次數(shù)】
    count($arr[,1])/sizeof();//統(tǒng)計(jì)$arr的元素個(gè)數(shù),參數(shù)"1"表示統(tǒng)計(jì)多維數(shù)組開(kāi)啟,默認(rèn)0為關(guān)閉【返回統(tǒng)計(jì)個(gè)數(shù)】
  • 回調(diào)函數(shù)

    1
    2
    3
    4
    array_filter($arr,"function");//把$arr放到函數(shù)function中處理,【返回判斷為TRUE的數(shù)據(jù)組成新數(shù)組,鍵值保留】
    array_walk($arr,"function"[,"data"]);//把$arr放到function(&$v,$k,$data)中處理【返回值為bool】
    array_map("function",$arr,$arr2,$arr3,....);//把所有數(shù)組返回到回調(diào)函數(shù)統(tǒng)一處理,【返回?cái)?shù)組】
    array_reduce($arr,myfunction[,initial]):把一維數(shù)組$arr中的值依次傳到自定義函數(shù)myfunction($v1,$v2)的v2上,v1為累加值類似于( .= ),[如果有initial,先把其當(dāng)v1傳進(jìn)去]【返回字符串】
  • 拆分,合并,分解,接合數(shù)組

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    array_slice($arr,1[,2]);//在$arr中,從第二個(gè)開(kāi)始取[,返回倆個(gè)值]【返回新數(shù)組(對(duì)原數(shù)組無(wú)影響),鍵值保留】
    array_splice($arr,1[,2,"aaa","bb"]);//刪除或替換,從$arr第二個(gè)開(kāi)始取,刪除或替換2個(gè)值【返回值為新數(shù)組,拆掉原數(shù)組】

    array_combine($arr1,$arr2);//數(shù)組$arr1為KEY,$arr2為VALUES結(jié)合形成新索引數(shù)組【返回索引數(shù)組】
    array_merge($arr1,$arr2,$arr3...);//數(shù)組進(jìn)行合并,保留鍵值,有重復(fù)后來(lái)者居上(取后者)【返回新數(shù)組】
    $arr1+$arr2 // 發(fā)現(xiàn)有key值相同的,取前者,第二個(gè)重復(fù)的值丟棄

    array_intersect($arr1,$arr2)//返回兩個(gè)數(shù)組的交集,鍵值不變
    array_diff($arr1,$arr2)//返回兩數(shù)組的差集,返回的值為第一個(gè)數(shù)組的值,鍵值不變

    array_chunk($arr,2)//分割數(shù)組,把$arr按照【2個(gè)為一組】均等分割【返回一個(gè)二維數(shù)組】
  • 數(shù)組的數(shù)據(jù)結(jié)構(gòu)【2.無(wú)返回值,傳值引用,就直接對(duì)原數(shù)組進(jìn)行了修改】

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    array_shift($arr)//從開(kāi)頭,刪除數(shù)組第一個(gè)元素
    array_unshift($arr,"one","two")//從開(kāi)頭,添加元素
    array_pop($arr)//從結(jié)尾,刪除數(shù)組最后一個(gè)元素
    array_push($arr,"aaa");//從結(jié)尾,添加元素

    current($arr)//返回?cái)?shù)組中的當(dāng)前單元 比如是關(guān)聯(lián)數(shù)組是不知道下標(biāo),可以輸出當(dāng)前數(shù)組的辦法解決
    key($arr)//返回當(dāng)前指針指向元素的鍵值
    next($arr)//當(dāng)前指針下移
    pre($arr)//當(dāng)前指針上移
    end($arr)//指針指到最后
    reset($arr)//指針回歸到開(kāi)頭

    unset($arr)//銷毀此數(shù)組
  • 其他

    1
    2
    3
    4
    5
    array_rand($arr,2);//隨機(jī)返回兩個(gè)$arr數(shù)組當(dāng)中的key【返回值為值或者數(shù)組】
    shuffle($arr)//隨機(jī)的重組$arr,順序變亂【返回新數(shù)組,保留鍵值】
    array_sum($arr);//返回$arr的value的和【返回一個(gè)值】
    range(0,10,2,)//快速創(chuàng)建0,10的數(shù)組,間隔為2,所以有5個(gè)值【返回新索引數(shù)組】
    http_build_query($arr)//把關(guān)聯(lián)數(shù)組轉(zhuǎn)換成一個(gè)經(jīng)過(guò)urlencode加密的URL eg:array["a"=>2];=>URL:a=2&

字符串函數(shù)

  • 返回bool

    1
    2
    isset($a) //當(dāng)$a=NULL 或不存在,返回false,反之為true
    empty($a) //當(dāng)$a=NULL/''/array()/0/'0'/不存在時(shí) 返回true,反之為false
  • 返回值為自字符

    1
    2
    3
    4
    5
    6
    7
    substr(字符串,開(kāi)始地方,[返回字符串的長(zhǎng)度]); // 截取字符串的一部分,第一個(gè)字符位置為0
    substr_replace($str,"aaa",start[,length]); // 在$str上操作,從第start個(gè)開(kāi)始,把【后邊】的字符[全/或length個(gè)]替換
    sub_count($str,"is"[,5,10]); //[ 從第五個(gè)字符開(kāi)始,搜索長(zhǎng)度為10,]搜索is在$str中出現(xiàn)的次數(shù),【返回次數(shù)】
    strstr($email,"@"[,true]) //從頭開(kāi)始搜索,無(wú)true返回@后邊字符,有true返回@前邊的字符[strrchr對(duì)比]
    strrchr($email,"@") //從結(jié)尾開(kāi)始搜索,返回@后的所有字符
    str_replace(被替換詞,替換詞,被搜索字符串,[統(tǒng)計(jì)替換次數(shù)$num]) //前兩個(gè)參數(shù)也可為數(shù)組,兩個(gè)數(shù)組元素個(gè)數(shù)相同
    str_repeat($str,num); //重復(fù)$str字符串 num次,
  • 返回值為數(shù)字類的

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    // 定位
    strpos($str,"@"); //返回@【第一次出現(xiàn)的位置】
    strrpos($str,"@"); //返回@【最后一次出現(xiàn)的位置】

    //統(tǒng)計(jì)
    strlen($string);成功則返回字符串 $string 的長(zhǎng)度
    mb_strlen($string,'utf8');//獲取字符串$string長(zhǎng)度,多字節(jié)的字符被計(jì)為 1。
    str_word_count($str[,0/1/2]); //返回$str中單詞的數(shù)量[0指返回次數(shù),默認(rèn)值/1指以數(shù)組形式返回單詞值/2指返回關(guān)聯(lián)數(shù)組,k為單詞首字母下標(biāo),v單詞值]

    //以下四個(gè)比較函數(shù),【返回值:相等0,小于-1,大于1】
    strcmp($str1,$str2); //按ASCII碼比較 str1>str2 則返回1 相等返回0 <返回-1
    strcasecmp //比較兩個(gè)字符串(不區(qū)分大小寫(xiě)),函數(shù)是二進(jìn)制安全的。類似于strncasecmp(),但是strncasecmp可以指定每個(gè)字符串用于比較的字符數(shù)。
    strnatcmp($str1,$str2); // 使用"自然"算法來(lái)比較兩個(gè)字符串(區(qū)分大小寫(xiě))
    strnatcasecmp($str1,$str2); // 使用一種"自然"算法來(lái)比較兩個(gè)字符串(不區(qū)分大小寫(xiě))

    number_format(10000[,2]);
    //==》10,000.00 把第一個(gè)參數(shù)格式化,保留2位小數(shù)

    在自然算法中,數(shù)字 2 小于數(shù)字 10。在計(jì)算機(jī)排序中,10 小于 2,這是因?yàn)?10 中的第一個(gè)數(shù)字小于 2。

  • 文本處理類

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    strtoupper($str) //字母全轉(zhuǎn)為大寫(xiě)【返回全大寫(xiě)字符串】
    strtolower() //字母全轉(zhuǎn)為小寫(xiě)【返回全小寫(xiě)字符串】
    ucfirst() //整個(gè)$str首字母大寫(xiě)
    ucword() //$str每個(gè)單詞首字母大寫(xiě)

    strtotime('2015-10-10 10:10:10'); //指定時(shí)間轉(zhuǎn)換為時(shí)間戳【返回時(shí)間戳】

    str_pad($str,length,[---,STR_PAD_BOTH]); //在$str的兩邊填補(bǔ)“---“,注意,length若小于$str長(zhǎng)度,不填補(bǔ)
    trim($str[,"a",STR_PAD_BOTH]) //去除兩邊/左/右的空白或"a",默認(rèn)是空白,或自定義字符

    floatval("123.45aa") //=》獲取變量的浮點(diǎn)值【123.45】
  • HTML類處理

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    htmlspecialchars($str) //函數(shù)把【預(yù)定義字符】轉(zhuǎn)換為【 HTML 實(shí)體】,&轉(zhuǎn)換成&amp
    htmlspecialchars_decode($str); //把【HTML實(shí)體】轉(zhuǎn)換成【預(yù)定義字符】,&amp轉(zhuǎn)換成&
    htmlentities($str); //函數(shù)把【預(yù)定義字符】轉(zhuǎn)換為【 HTML 實(shí)體】,&轉(zhuǎn)換成&amp,有亂碼問(wèn)題,注意第二第三個(gè)參數(shù),若編碼不正確,會(huì)在實(shí)體化時(shí)把信息丟失。
    html_entity_decode($str); //把【HTML實(shí)體】轉(zhuǎn)換成【預(yù)定義字符】,&amp轉(zhuǎn)換成&, &gt 轉(zhuǎn)成 <

    addslashes($html); //添加轉(zhuǎn)義字符“/”
    stripslashes($html); //刪除轉(zhuǎn)義字符“/”
    strip_tags($html); //去除HTML標(biāo)簽

    nl2br($str); //在$str中的換行/n前插入<br>,因?yàn)閈n在源碼可以換行,但是在瀏覽器窗口不行,有這個(gè)就可以
    iconv( from_charset ; to_charset,$str); //轉(zhuǎn)化字符格式,如$file_name = iconv("gb2312","utf-8",$file_name);

正則函數(shù)

  • 字符串的匹配查找

    1
    2
    3
    4
    preg_match($pattern,$subject,$arr); //按正則$pattern處理$subject,第一次匹配結(jié)果返回到數(shù)組中【函數(shù)的返回值為匹配次數(shù)】
    preg_match_all($pattern,$subject,$arr) //按正則$pattern處理$subject,全部匹配結(jié)果返回到數(shù)組中【函數(shù)的返回值為匹配次數(shù)】
    strstr($str,"@"[,true]);
    strpos,strrpos,substr($str,position) //聯(lián)合使用
  • 字符串的替換

    1
    2
    preg_replace($pattenr,$replace,$str);//【強(qiáng)大的字符串處理函數(shù)】在$str中,把$parrern匹配的值替換成$replcae【返回值為處理后的字符串】
    str_replace($str,"aaa","bbb");//把$str中的aaa換成bbb
  • 字符串的分割和鏈接

    1
    2
    3
    preg_split($pattern,$str);通過(guò)一個(gè)正則表達(dá)式分隔字符串【返回值為數(shù)組】
    explode(",",$str[,$limit_num]);//把$str按照","分割成一個(gè)數(shù)組[可選參數(shù)為返回?cái)?shù)組的元素個(gè)數(shù)]【返回一個(gè)分割后的數(shù)組】
    impolde("+",$arr);//把$arr里的元素按照“+”鏈接成一個(gè)字符串
1
2
3
// 示例
$keywords = preg_split("/[\s,]+/", "hypertext language, programming");
// 結(jié)果Array([0] => hypertext,[1] => language[2] => programming)

遵循:能用字符串函數(shù)解決不用正則的原則,主要依據(jù)是速度問(wèn)題,內(nèi)部函數(shù)快于正則。

數(shù)學(xué)函數(shù)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ceil()//向上取整
floor()//向下取整
round();//四舍五入
abs();//取絕對(duì)值

rand(10,100)//隨機(jī)取值
mt_rand(10,100)//隨機(jī)取值,算法不同,速度更快

fmod()//返回除法浮點(diǎn)形余數(shù)

max(int/$arr)//取最大值
min(int/$arr)//取最小值

pow(1024,2)//返回1021的2次冪

時(shí)間函數(shù)

1
2
3
4
5
6
7
8
9
10
date_default_timezone_set()('PRC');//設(shè)置時(shí)區(qū)為中國(guó)
date.timezone ="PRC";//或者直接修改PHP.INI

time(); //默認(rèn)獲取當(dāng)前時(shí)間,【返回時(shí)間戳格式】
micritime(); //獲取當(dāng)前時(shí)間【返回毫秒的時(shí)間戳】
getdate() //獲取當(dāng)前時(shí)間,【返回一個(gè)數(shù)組,參數(shù)年,月,日等都有】

mktime(H,i,s,m,d,Y) //指定時(shí)間轉(zhuǎn)為時(shí)間戳,參數(shù)為空的時(shí)候作用與time()相同【返回時(shí)間戳格式】
strtotime('2015-10-10 10:10:10'); //指定時(shí)間轉(zhuǎn)換為時(shí)間戳【返回時(shí)間戳】
date("Y-m-d H:i:s",time()); //轉(zhuǎn)換時(shí)間戳為日期格式【返回目標(biāo)格式的字符串】

JSON

1
2
3
json_encode($data);//對(duì)變量進(jìn)行JSON編碼
json_decode($data)//對(duì)JSON格式的字符串進(jìn)行解碼
json_last_error();//返回最后一次反生的錯(cuò)誤

SQL函數(shù)

1
2
3
4
5
6
7
8
9
10
11
12
13
mysql_connect('localhost',"root","root"); //連接數(shù)據(jù)庫(kù)
mysql_select_db('data',$conn); //選擇數(shù)據(jù)庫(kù)名
mysql_query('set names utf8'); //設(shè)置編碼

mysql_fetch_row(); //返回索引數(shù)組
mysql_fetch_array(); //試返回值為關(guān)聯(lián)/索引數(shù)組
mysql_fetch_object; //返回對(duì)象
mysql_fetch_assoc(); //返回關(guān)聯(lián)數(shù)組

mysql_num_rows(); //返回上一次select的查詢語(yǔ)句條數(shù)
mysql_affected_rows(); //返回上一次insert,update,delete的數(shù)據(jù)條數(shù)

mysql_close(); //關(guān)閉數(shù)據(jù)庫(kù)

URL處理函數(shù)

1
2
3
4
5
urlencode($url) //對(duì)該URL進(jìn)行編碼;原因:防止亂碼,解決空格的呢個(gè)字符不能傳遞問(wèn)題,form也是此編碼格式傳遞
urldecode($url) //對(duì)該URL進(jìn)行解碼
parse_url($url) //返回該URL的所有信息,[scheme協(xié)議][host域名] [path路徑][query參數(shù)] 【返回含信息的數(shù)組】
pathinfo($url) //["dirname"目錄名] ["basename"文件名] ["extension"文件后綴]【返回含信息的數(shù)組,下標(biāo)不同】
get_meta_tags($url) //獲取該頁(yè)面的所有META標(biāo)簽【返回關(guān)聯(lián)數(shù)組】

其他函數(shù)

1
2
3
sleep(10)//腳本執(zhí)行到這里后,延遲10秒繼續(xù)執(zhí)行
serialize()//返回字符串,此字符串包含了表示 value 的字節(jié)流,可以存儲(chǔ)于任何地方。
unserialize()//對(duì)單一的已序列化的變量進(jìn)行操作,將其轉(zhuǎn)換回 PHP 的值。

當(dāng)序列化對(duì)象時(shí),PHP 將試圖在序列動(dòng)作之前調(diào)用該對(duì)象的成員函數(shù) sleep()。這樣就允許對(duì)象在被序列化之前做任何清除操作。類似的,當(dāng)使用 unserialize() 恢復(fù)對(duì)象時(shí), 將調(diào)用 wakeup() 成員函數(shù)

參考:

  • PHP常用函數(shù)歸類總結(jié)【大全】
  • 總結(jié)

    以上是生活随笔為你收集整理的PHP(三)——PHP基础知识的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。