總結一些PHP中好用但又容易忽略的小知識

2022-09-28 19:42:32 字數 3185 閱讀 6069

1、php函式之判斷函式是否存在

當我們建立了自定義函式,並且了解了可變函式的用法,為了確保程式呼叫的函式是存在的,經常會先使用function_exists判斷一下函式是否存在。同樣的method_exists可以用來檢測類的方法是否存在。

function func()

if (function_exists('func'))

類是否定義可以使用class_exists

class myclass

// 使用前檢查類是否存在

if (class_exists('myclass'))

php中有很多這類的檢查方法,例如檔案是否存在file_exists等

$filename = 'test.txt';

if (!file_exists($filename))

2、php函式之可變函式

所謂可變函式,即通過變數的值來呼叫函式,因為變數的值是可變的,所以可以通過改變乙個變數的值來實現呼叫不同的函式。經常會用在**函式、函式列表,或者根據動態引數來呼叫不同的函式。可變函式的呼叫方法為變數名加括號。

function name()

$func = 'name';

$func(); //呼叫可變函式

可變函式也可以用在物件的方法呼叫上

class book

}$func = 'getname';

$book = new book();

$book->$func();

靜態方法也可以通過變數來進行動態呼叫

$func = 'getspeed';

$classname = 'car';

echo $classname::$func(); //動態呼叫靜態方法

靜態方法中,$this偽變數不允許使用。可以使用self,parent,static在內部呼叫靜態方法與屬性。

class car

public static function speedup()

}class bigcar extends car

}bigcar::start();

echo bigcar::getspeed();

3、php類和物件之物件的高階特性

物件比較,當同乙個類的兩個例項的所有屬性都相等時,可以使用比較運算子==進行判斷,當需要判斷兩個變數是否為同乙個物件的引用時,可以使用全等運算子===進行判斷。

class car

$a = new car();

$b = new car();

if ($a == $b) echo '=='; //true

if ($a === $b) echo '==='; //false

物件複製,在一些特殊情況下,可以通過關鍵字clone來複製乙個物件,這時__clone方法會被呼叫,通過這個魔術方法來設定屬性的值。

class car

}$a = new car();

$a->name = 'new car';

$b = clone $a;

var_dump($b);

物件序列化,可以通過serialize方法將物件序列化為字串,用於儲存或者傳遞資料,然後在需要的時候通過unserialize將字程式設計客棧符串反序列化成物件進行使用。

class car

$a = new car();

$str = serialize($a); //物件序列化成字串

echo $str.'

';$b = unserialize($str); //反序列化為物件

var_dump($b);

4、php字串之獲取字串的長度

php中有乙個神奇的函式,可以直接獲取字串的長度,這個函式就是strlen()。

$str = 'hello';

$len = strlen($str);

echo $len;//輸出結果是5

strlen函式對於計算英文本元是非常的擅長,但是如果有中文www.cppcns.com漢字,要計算長度該怎麼辦?

可以使用mb_strlen()函式獲取字串中中文長度。

$str = "我愛你";

echo mb_strlen($str,"utf8");//結果:3,此處的utf8表示中文編碼是utf8格式,中文一般採用utf8編碼

5、php字串之格式化字串

如果有乙個字串$str = '99.9';,怎麼樣使這個字串變成99.90呢?

我們需要用到php的格式化字串函式sprintf()

函式說明:sprintf(格式, 要轉化的字串)

返回:格式化好的字串

$str = '99.9';

$result = sprintf('%01.2f', $str);

echo $result;//結果sdpsyhh顯示99.90

解釋下,上面例子中的格式

這個 %01.2f 是什麼意思呢?

1、這個 % 符號是開始的意思,寫在最前面表示指定格式開始了。 也就是 "起始字元", 直到出現 "轉換字元" 為止,就算格式終止。

2、跟在 % 符號後面的是 0, 是 "填空字元" ,表示如果位置空著就用0來填滿。

3、在 0 後面的是1,這個 1 是規定整個所有的字串佔位要有1位以上(小數點也算乙個佔位)。

如果把 1 改成 6,則 $result的值將為 099.90

因為,在小數點後面必須是兩位,99.90一共5個佔位,現在需要6個佔位,所以用0來填滿。

4、在 %01 後面的 .2 (點2) 就很好理解了,它的意思是,小數點後的數字必須佔2位。 如果這時候,$str 的值為9.234,則 $result的值將為9.23.

為什麼4 不見了呢? 因為在小數點後面,按照上面的規定,必須且僅能佔2位。 可是 $str 的值中,小數點後面佔了3位,所以,尾數4被去掉了,只剩下 23。

5、最後,以 f "轉換字元" 結尾。

6、php字串之字串的轉義

php字串轉義函式addslashes()

函式說明:用於對特殊字元加上轉義字元,返回乙個字串

返回值:乙個經過轉義後的字串

$str = "what's your name?";

echo addslashes($str);//輸出:what\'s your name?

總結本文標題: 總結一些php中好用但又容易忽略的小知識

本文位址: /wangluo/php/192718.html

PHP中最容易忘記的一些知識點總結

1 定義常量 1define tax rate 0.08 echo tax rate 輸出0.08 2 php 5.3 const tax rate2 0.01 echo tax rate2 輸出0.01 2 require 和require once 區別 前者遇到即包含檔案,後者會判斷是否已經包...

PHP中GPC繞過的一些總結

1.通過資料庫 文字 中轉 通過資料庫中 注意存入資料庫和select出的資料 使用者輸入 gpc addslashes 資料庫 執行sql語句 include 寫入快取檔案 insert update select 這個問題是程式設計師容易忽略的,往往只是依靠gpc或addslashes函式對使用...

PHP中GPC繞過的一些總結

1.通過資料庫 文字 中轉 通過資料庫中 注意存入資料庫和select出的資料 使用者輸入 gpc addslashes 資料庫 執行sql語句 include 寫入快取檔案 insert update select 這個問題是程式設計師容易忽略的,往往只是依靠gpc或addslashes函式對使用...