1.isset()和empty()的區(qū)別
兩者都是測試變量用的。但是isset()是測試變量是否被賦值,而empty()是測試一個(gè)已經(jīng)被賦值的變量是否為空。如果一個(gè)變量沒被賦值就引用在php里是被允許的,但會有notice提示。如果一個(gè)變量被賦空值,$foo=”"或者$foo=0或者$foo=false,那么empty($foo)返回真,isset($foo)也返回真,就是說賦空值不會注銷一個(gè)變量。要注銷一個(gè)變量,可以用 unset($foo)或者$foo=NULL。
2.如何顯示錯(cuò)誤信息
當(dāng)php.ini的display_errors = On并且error_reporting = E_ALL時(shí),將顯示所有的錯(cuò)誤和提示,調(diào)試的時(shí)候最好打開以便糾錯(cuò),如果你用以前php寫法錯(cuò)誤信息多半是關(guān)于未定義變量的。變量在賦值以前調(diào)用會有提示,解決辦法是探測或者屏蔽
3.單引號 雙引號什么區(qū)別?分別什么時(shí)侯用
單引號中,任何變量($var)、特殊轉(zhuǎn)義字符(如”t r n”等)不會被解析,因此PHP的解析速度更快,轉(zhuǎn)義字符僅僅支持”’”和””這樣對單引號和反斜杠本身的轉(zhuǎn)義;雙引號中,變量($var)值會代入字符串中,特殊轉(zhuǎn)義字符也會被解析成特定的單個(gè)字符,還有一些專門針對上述兩項(xiàng)特性的特殊功能性轉(zhuǎn)義,例如”$”和”。這樣雖然程序編寫更加方便,但同時(shí)PHP的解析也很慢;數(shù)組中,如果下標(biāo)不是整型,而是字符串類型,請務(wù)必用單引號將下標(biāo)括起,正確的寫法為$array['key'],而不是$array[key],因?yàn)椴徽_的寫法會使PHP解析器認(rèn)為key是一個(gè)常量,進(jìn)而先判斷常量是否存在,不存在時(shí)才以”key”作為下標(biāo)帶入表達(dá)式中,同時(shí)出發(fā)錯(cuò)誤事件,產(chǎn)生一條Notice級錯(cuò)誤。因此,在絕大多數(shù)可以使用單引號的場合,不要使用雙引號。
4.print,echo,print_r什么區(qū)別?分別什么時(shí)侯用?
echo和print都可以做輸出,不同的是,echo不是函數(shù),沒有返回值,而print是一個(gè)函數(shù)有返回值,所以相對而言如果只是輸出 echo 會更快,而print_r通常用于打印變量的相關(guān)信息,通常在調(diào)試中使用
5.在PHP中有些時(shí)候需要打開遠(yuǎn)程文件
打開遠(yuǎn)程文件函數(shù)為:fopen(http://XXX.com/a.php),fsockopen(http://XXX.com/a.php) , file_get_contents(http://XXX.com/a.php)等)
在php5,apache2.2.X環(huán)境下,會提示你無法打開文件流,http請求失敗(failed to open stream: HTTP request failed!)
在php.ini中,有這樣兩個(gè)選項(xiàng):
allow_url_fopen =on(表示可以通過url打開遠(yuǎn)程文件),user_agent=”PHP”(表示通過哪種腳本訪問網(wǎng)絡(luò),默認(rèn)前面有個(gè) ” ; ” 去掉即可。),重啟Apache服務(wù)即可。
6.如何預(yù)先獲取auto_increment的值?
7.利用獲得客戶端信息
getenv(”REMOTE_ADDR”)可以得到瀏覽者的IP
getenv(”HTTP_USER_AGENT”)可以得到瀏覽者的操作系統(tǒng)類型,瀏覽器類型
getenv能得到所有$_ENV這個(gè)全局變量的所有東西
print_r($_ENV)可以看到很多東西,比如
echo getenv(ALLUSERSPROFILE); 可以看到ALLUSERSPROFILE的值
echo getenv(PATHEXT);可以看到PATHEXT的值
8.mysql_fetch_row()和mysql_fetch_array()的區(qū)別
mysql_fetch_array() 是 mysql_fetch_row() 的擴(kuò)展版本。除了將數(shù)據(jù)以數(shù)字索引方式儲存在數(shù)組中之外,還可以將數(shù)據(jù)作為關(guān)聯(lián)索引儲存,用字段名作為鍵名。用 mysql_fetch_array()并不明顯比用 mysql_fetch_row()慢,而且還提供了明顯更多的值。
mysql_fetch_array() 中可選的第二個(gè)參數(shù) result_type 是一個(gè)常量,可以接受以下值:MYSQL_ASSOC,MYSQL_NUM 和MYSQL_BOTH。本特性是PHP 3.0.7 起新加的。本參數(shù)的默認(rèn)值是 MYSQL_BOTH。
9.EOD的用法和功效
就是比單引號和雙引號好些,能包含換行。EOD可以改成其他字符。
10.用gdate()獲得一長串?dāng)?shù)字怎么轉(zhuǎn)換成正常的時(shí)間?
gmdate 返回 GMT 時(shí)間,除此以外和 date() 函數(shù)完全一樣。如果你需要本地時(shí)間,就用 date() 來格式化時(shí)間戳。
11.正則里面的()//區(qū)別何在?
//是模式定界符,代表里面是一個(gè)正則規(guī)則。
()代表的是子模式,一個(gè)//中可以有很多的()組成,可以用1 2 或 $1 $2來匹配前面子模式的值。
12.require和require_once有啥區(qū)別?
require重復(fù)調(diào)用會多次加載你飲用的文件;require_once只加載一次,而不管你實(shí)際上調(diào)用了多少次,主要用于復(fù)雜的文件包含關(guān)系,例如b包含a,c包含a,但同時(shí)c又包含了b,那么如果用require的話可能會導(dǎo)致兩次加載a
13.三個(gè)IP地址的獲取有什么區(qū)別?
$_SERVER['REMOTE_ADDR'];
$_SERVER['HTTP_CLIENT_IP'];
$_SERVER['HTTP_X_FORWARDED_FOR'];
$_SERVER['REMOTE_ADDR']; //訪問端(有可能是用戶,有可能是代理的)IP
$_SERVER['HTTP_CLIENT_IP']; //代理端的(有可能存在,可偽造)
$_SERVER['HTTP_X_FORWARDED_FOR']; //用戶是在哪個(gè)IP使用的代理(有可能存在,也可以偽造)
14.$_GET和$_POST的區(qū)別?
一:get 方法是限制傳值的大小,不能超過2K. 而post不限制傳值的大小.
二:Get是用來從服務(wù)器上獲得數(shù)據(jù),而Post是用來向服務(wù)器上傳遞數(shù)據(jù)。
三:Get將表單中數(shù)據(jù)的按照variable=value的形式,添加到action所指向的URL后面,并且兩者使用”?”連接,而各個(gè)變量之間使用”&”連接;Post是將表單中的數(shù)據(jù)放在form的數(shù)據(jù)體中,按照變量和值相對應(yīng)的方式,傳遞到action所指向URL。
四:Get是不安全的,因?yàn)樵趥鬏斶^程,數(shù)據(jù)被放在請求的URL中,而如今現(xiàn)有的很多服務(wù)器、代理服務(wù)器或者用戶代理都會將請求URL記錄到日志文件中,然后放在某個(gè)地方,這樣就可能會有一些隱私的信息被第三方看到。另外,用戶也可以在瀏覽器上直接看到提交的數(shù)據(jù),一些系統(tǒng)內(nèi)部消息將會一同顯示在用戶面前。Post的所有操作對用戶來說都是不可見的。
15.在類里面的函數(shù)前面可以加public,private,但在函數(shù)庫中的函數(shù)前面不能加呢?
function自定的隨便你,public是公開使用的類屬性對象,privat是獨(dú)立使用的類屬性對象;
類中 public 或 private 是指這個(gè)方法(要注意叫”方法”)是對外公開還是是屬于類私有而你指的函數(shù)庫,它是”函數(shù)”的庫,不屬于類中的方法,所以不必也不能有前置修飾。
16.頁面執(zhí)行時(shí)間怎么算的?
17. UTF8編碼腳本session_start(),header(),settcookie()等函數(shù)出錯(cuò),提示”headers already sent “。
UTF8編碼腳本通常的編輯器都會在文件頭部加上三字節(jié)的BOM編碼來識別UTF8編碼格式,這三個(gè)字節(jié)是普通文件編輯器看不到,而輸出時(shí)去先行以HTML輸出了。執(zhí)行以上函數(shù)時(shí)就會提示以上錯(cuò)誤。解決辦法:用editplus等可以清除BOM的編輯器,清除BOM(設(shè)置為utf8清除BOM)保存一下即可。
18. PHP中單引號,雙引號,反引號的區(qū)別
PHP單引號(’),雙引號(”")反引號(`)都能引用字串。單引號中變量不被轉(zhuǎn)義,雙引號轉(zhuǎn)義變量,而反引號中變量轉(zhuǎn)義作為shell命令被執(zhí)行。
上一篇 php中正則匹配中文漢字
下一篇 QQ群一鍵加入?