之前一直用的比較多的是ASP/ASP.NET語言,最近由於整個網站的技術平臺轉向了PHP平臺,這些系統的小修小改和開發新的應用都需PHP語言來編寫了,總結一下近段時間的一些PHP知識點。以備查之用。
1,基礎語法
PHP的語法都是屬於C系列的,類似C,C#,JAVA等語言,所以一般的語句都大同小異。總結一些特殊的語法形式:
可變變量(動態變量):
$var = 'php' ;
$$var = 'the php var' ;
echo $php ; //輸出the php var
字符串中的變量解析:
$var = 'php' ;
echo "hello $var" ; //輸出hello php , 爲了不產生解析錯誤,最好再變量上加{}符,即"hello {$var}",詳細的變量解析規則可以參見PHP的變量解析規則文檔。
單引號和雙引號的區別:
單,雙引號都可以表示字符串,其區別在於轉義的層次,單引號只轉義\,而雙引號則轉義所有可轉義的特殊字符,所以只表示常規字符,使用單引號比雙引號的速度更快。
NULL和空值:
$var ;
echo isset($var) ? 'not null' : 'null' ; //輸出 null
echo empty($var) ? 'empty' : 'not empty' ; //輸出 empty
$var = '' ;
echo isset($var) ? 'not null' : 'null' ; //輸出 not null
echo empty($var) ? 'empty' : 'not empty' ; //輸出 empty
$var = 0 ;
echo isset($var) ? 'not null' : 'null' ; //輸出 not null
echo empty($var) ? 'empty' : 'not empty' ; //輸出 empty
數組的操作技巧
$arr = array('key1'=>'value1','key2'=>'value2');
while(list($k,$v) = each($arr))
{
echo "$k,$v" ;
}
foreach($arr as $k=>$v)
{
echo "$k,$v" ;
}
將數組複製爲變量:
extract($arr ); //相反的函數是compact()
echo "$key1 $key2" ;
數組判斷:
echo is_array($arr) ? 'array' : 'not array' ; //輸出array
echo gettype($arr) == 'array' ? 'array' : 'not array';//這樣處理也可以,輸出array,不過這樣用法比較少見
變量函數:
function a()
{
echo "the function a" ;
}
function b($arg)
{
echo "$arg" ;
}
$x = 'a' ;
$x() ; //輸出the function a
$x = 'b' ;
$x('the function b') ; //輸出the function b
幾個PHP的“魔術常量”:
__LINE__ 文件中的當前行號。
__FILE__ 文件的完整路徑和文件名。如果用在包含文件中,則返回包含文件名。自PHP4.0.2 起,__FILE__總是包含一個絕對路徑,而在此之前的版本有時會包
含一個相對路徑
__FUNCTION__ 函數名稱(PHP4.3.0 新加)。自PHP5 起本常量返回該函數被定義時的名字(區分大小寫)。在PHP4 中該值總是小寫字母的。
__CLASS__ 類的名稱(PHP4.3.0 新加)。自PHP5 起本常量返回該類被定義時的名字(區分大小寫)。在PHP4 中該值總是小寫字母的。
__METHOD__ 類的方法名(PHP5.0.0 新加)。返回該方法被定義時的名字(區分大小寫)。
2,時間的處理
time() 函數返回的是unix時間戳,其值跟時區設置是無關的。
date(format,time) : 格式化本地時間,不同的時區設置會返回不同的值
通過設置php.ini文件的date.timezone=或者在程序文件設置ini_set('date.timezone','Asia/Shanghai');影響其返回值
gmdate(format,time) : 格式化一個 GMT/UTC 日期/時間,返回的是格林威治標準時(GMT)。
所以最優的處理方式,不是直接設置php.ini或者通過ini_set來指定時區,而是存儲的時time()的值,然後根據指定時區gmdate一個時間,如,顯示中國的時間(與標準相差8小時),則代碼寫法如下:
echo gmdate('Y-m-d H:i:s', time() + 3600 * 8);
3,魔法引用函數
魔法引用即是當數據出現' , " ,\時加上轉義字符\。
php提供了兩個相關的設置:magic_quotes_gpc和magic_quotes_runtime
具體說明:
magic_quotes_gpc
作用範圍是:WEB客戶服務端;
作用時間:請求開始是,例如當腳本運行時.
magic_quotes_runtime
作用範圍:從文件中讀取的數據或執行exec()的結果或是從SQL查詢中得到的;
作用時間:每次當腳本訪問運行狀態中產生的數據.
所以
magic_quotes_gpc的設定值將會影響通過Get/Post/Cookies獲得的數據
magic_quotes_runtime的設定值將會影響從文件中讀取的數據或從數據庫查詢得到的數據
其行爲受到php.ini的設置影響,不同的服務器的php.ini的設置可能不同,所以爲了減少其依賴性,最優的處理方式應爲如下:
通過set_magic_quotes_runtime(0);禁用運行時轉義
然後在程序中根據需要轉義和反轉義,如處理表單提交數據時:
if(!get_magic_quotes_gpc())
{
addslashes($_POST['VAR']) ;//如沒有轉義,則使用轉義函數
}
在顯示數據時,可通過反轉義stripslashes(),即去掉\,獲得原始形式的數據。
4,錯誤報告
在程序發佈時,建議在程序開頭加上:
error_reporting(0) ; //禁用錯誤報告,調試階段可以設爲error_reporting(E_ALL) ;
暫時就總結這些,有新的發現時,再更新。。。