多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > php教程 > php中常見問題總結(jié)

php中常見問題總結(jié)

來源:程序員人生   發(fā)布時(shí)間:2014-03-28 04:41:16 閱讀次數(shù):3100次

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的值?

  1. mysql_connect(’localhost’,'root’,'root’) or die(’不能連接到服務(wù)器‘); 
  2. mysql_select_db(’test’);                      //連接數(shù)據(jù)庫 
  3. $sql = “show create table id_user”;     //id_userd 為表名 
  4. $query = mysql_query($sql); 
  5. $arr = mysql_fetch_array($query); 
  6. $b = strstr($arr[1],’AUTO_INCREMENT=’);       //獲取子字符串,包含AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 ) 
  7. $result = intval(substr($b,15));              //substr()從字符串第16個(gè)位置獲取字符串,再對獲取后的字符串進(jìn)行int類型轉(zhuǎn)換 
  8. echo ‘AUTO_INCREMENT的值’ .$result;           //輸出結(jié)果:即為下一次插入數(shù)據(jù)時(shí)的ID值 

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í)間怎么算的?

  1. $mtime = explode(’ ‘, microtime()); 
  2.  
  3. $starttime = $mtime[1] + $mtime[0]; 
  4. …… 
  5. …… 
  6. …… 
  7. $mtime = explode(’ ‘, microtime()); 
  8. $endtime = $mtime[1] + $mtime[0]; 
  9. $usedtime = $endtime - $starttime
  10. printf(”<br />%0.4f s”, $usedtime); 

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í)行。

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 欧美日韩精品一区二区三区视频在线 | 在线观看噜噜噜私人影院 | 国产香蕉97碰碰久久人人 | 两性午夜又粗又大又爽视频 | 网友自拍网站 | 手机看片欧美日韩 | 4438x成人网最大色成网站 | 99精品大香线蕉线伊人久久久 | 欧美 日韩 国产在线 | 日韩一级一欧美一级国产 | 国产永久免费视频 | 欧美特级一级毛片 | 免费看黄色的网址 | 可以免费观看的黄色网址 | 正在播放国产露脸真实高清 | 日本a∨在线播放高清 | 色爱区综合 | 亚洲人和日本人jzz护士 | 一区二区三区高清在线 | 国产精品性视频免费播放 | 美女免费网站视频 | 久久91综合国产91久久精品 | 亚洲人成a在线网站 | 欧美一区视频在线 | 91亚洲成人 | 亚洲天堂久久 | 国产三级小视频 | 欧美jizz18欧美 | 免费在线视频一区 | 色妞色综合久久夜夜 | 国内一区二区三区精品视频 | 在线精品自拍亚洲第一区 | 大香一本蕉伊线亚洲网 | 乱在线伦视频免费 | 久久国产欧美日韩高清专区 | 曰韩一级 | 国产精品无码久久综合网 | 最新99国产成人精品视频免费 | 日本高清www免费视频软件 | 亚洲一区二区三区高清不卡 | 免费国产一区二区在免费观看 |