日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > php中常見問題總結

php中常見問題總結

來源:程序員人生   發布時間:2014-03-28 04:41:16 閱讀次數:3110次

1.isset()和empty()的區別

兩者都是測試變量用的。但是isset()是測試變量是否被賦值,而empty()是測試一個已經被賦值的變量是否為空。如果一個變量沒被賦值就引用在php里是被允許的,但會有notice提示。如果一個變量被賦空值,$foo=”"或者$foo=0或者$foo=false,那么empty($foo)返回真,isset($foo)也返回真,就是說賦空值不會注銷一個變量。要注銷一個變量,可以用 unset($foo)或者$foo=NULL。

2.如何顯示錯誤信息

當php.ini的display_errors = On并且error_reporting = E_ALL時,將顯示所有的錯誤和提示,調試的時候最好打開以便糾錯,如果你用以前php寫法錯誤信息多半是關于未定義變量的。變量在賦值以前調用會有提示,解決辦法是探測或者屏蔽

3.單引號 雙引號什么區別?分別什么時侯用

單引號中,任何變量($var)、特殊轉義字符(如”t r n”等)不會被解析,因此PHP的解析速度更快,轉義字符僅僅支持”’”和””這樣對單引號和反斜杠本身的轉義;雙引號中,變量($var)值會代入字符串中,特殊轉義字符也會被解析成特定的單個字符,還有一些專門針對上述兩項特性的特殊功能性轉義,例如”$”和”。這樣雖然程序編寫更加方便,但同時PHP的解析也很慢;數組中,如果下標不是整型,而是字符串類型,請務必用單引號將下標括起,正確的寫法為$array['key'],而不是$array[key],因為不正確的寫法會使PHP解析器認為key是一個常量,進而先判斷常量是否存在,不存在時才以”key”作為下標帶入表達式中,同時出發錯誤事件,產生一條Notice級錯誤。因此,在絕大多數可以使用單引號的場合,不要使用雙引號。

4.print,echo,print_r什么區別?分別什么時侯用?

echo和print都可以做輸出,不同的是,echo不是函數,沒有返回值,而print是一個函數有返回值,所以相對而言如果只是輸出 echo 會更快,而print_r通常用于打印變量的相關信息,通常在調試中使用

5.在PHP中有些時候需要打開遠程文件

打開遠程文件函數為:fopen(http://XXX.com/a.php),fsockopen(http://XXX.com/a.php) , file_get_contents(http://XXX.com/a.php)等)

在php5,apache2.2.X環境下,會提示你無法打開文件流,http請求失敗(failed to open stream: HTTP request failed!)

在php.ini中,有這樣兩個選項:

allow_url_fopen =on(表示可以通過url打開遠程文件),user_agent=”PHP”(表示通過哪種腳本訪問網絡,默認前面有個 ” ; ” 去掉即可。),重啟Apache服務即可。

6.如何預先獲取auto_increment的值?

  1. mysql_connect(’localhost’,'root’,'root’) or die(’不能連接到服務器‘); 
  2. mysql_select_db(’test’);                      //連接數據庫 
  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個位置獲取字符串,再對獲取后的字符串進行int類型轉換 
  8. echo ‘AUTO_INCREMENT的值’ .$result;           //輸出結果:即為下一次插入數據時的ID值 

7.利用獲得客戶端信息

getenv(”REMOTE_ADDR”)可以得到瀏覽者的IP

getenv(”HTTP_USER_AGENT”)可以得到瀏覽者的操作系統類型,瀏覽器類型

getenv能得到所有$_ENV這個全局變量的所有東西

print_r($_ENV)可以看到很多東西,比如

echo getenv(ALLUSERSPROFILE); 可以看到ALLUSERSPROFILE的值

echo getenv(PATHEXT);可以看到PATHEXT的值

8.mysql_fetch_row()和mysql_fetch_array()的區別

mysql_fetch_array() 是 mysql_fetch_row() 的擴展版本。除了將數據以數字索引方式儲存在數組中之外,還可以將數據作為關聯索引儲存,用字段名作為鍵名。用 mysql_fetch_array()并不明顯比用 mysql_fetch_row()慢,而且還提供了明顯更多的值。

mysql_fetch_array() 中可選的第二個參數 result_type 是一個常量,可以接受以下值:MYSQL_ASSOC,MYSQL_NUM 和MYSQL_BOTH。本特性是PHP 3.0.7 起新加的。本參數的默認值是 MYSQL_BOTH。

9.EOD的用法和功效

就是比單引號和雙引號好些,能包含換行。EOD可以改成其他字符。

10.用gdate()獲得一長串數字怎么轉換成正常的時間?

gmdate 返回 GMT 時間,除此以外和 date() 函數完全一樣。如果你需要本地時間,就用 date() 來格式化時間戳。

11.正則里面的()//區別何在?

//是模式定界符,代表里面是一個正則規則。

()代表的是子模式,一個//中可以有很多的()組成,可以用1 2 或 $1 $2來匹配前面子模式的值。

12.require和require_once有啥區別?

require重復調用會多次加載你飲用的文件;require_once只加載一次,而不管你實際上調用了多少次,主要用于復雜的文件包含關系,例如b包含a,c包含a,但同時c又包含了b,那么如果用require的話可能會導致兩次加載a

13.三個IP地址的獲取有什么區別?

$_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'];  //用戶是在哪個IP使用的代理(有可能存在,也可以偽造)

14.$_GET和$_POST的區別?

一:get 方法是限制傳值的大小,不能超過2K. 而post不限制傳值的大小.

二:Get是用來從服務器上獲得數據,而Post是用來向服務器上傳遞數據。

三:Get將表單中數據的按照variable=value的形式,添加到action所指向的URL后面,并且兩者使用”?”連接,而各個變量之間使用”&”連接;Post是將表單中的數據放在form的數據體中,按照變量和值相對應的方式,傳遞到action所指向URL。

四:Get是不安全的,因為在傳輸過程,數據被放在請求的URL中,而如今現有的很多服務器、代理服務器或者用戶代理都會將請求URL記錄到日志文件中,然后放在某個地方,這樣就可能會有一些隱私的信息被第三方看到。另外,用戶也可以在瀏覽器上直接看到提交的數據,一些系統內部消息將會一同顯示在用戶面前。Post的所有操作對用戶來說都是不可見的。

15.在類里面的函數前面可以加public,private,但在函數庫中的函數前面不能加呢?

function自定的隨便你,public是公開使用的類屬性對象,privat是獨立使用的類屬性對象;

類中 public 或 private 是指這個方法(要注意叫”方法”)是對外公開還是是屬于類私有而你指的函數庫,它是”函數”的庫,不屬于類中的方法,所以不必也不能有前置修飾。

16.頁面執行時間怎么算的?

  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()等函數出錯,提示”headers already sent “。

UTF8編碼腳本通常的編輯器都會在文件頭部加上三字節的BOM編碼來識別UTF8編碼格式,這三個字節是普通文件編輯器看不到,而輸出時去先行以HTML輸出了。執行以上函數時就會提示以上錯誤。解決辦法:用editplus等可以清除BOM的編輯器,清除BOM(設置為utf8清除BOM)保存一下即可。

18. PHP中單引號,雙引號,反引號的區別

PHP單引號(’),雙引號(”")反引號(`)都能引用字串。單引號中變量不被轉義,雙引號轉義變量,而反引號中變量轉義作為shell命令被執行。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 99久国产| 青青草国产成人av片免费 | 91精品国产综合久久久久久丝袜 | 欧美激情小视频 | 91精品亚洲 | 日韩www| 国产真人真事毛片视频 | 国产一区免费视频 | 国产一区精品在线 | 亚洲精品免费在线观看 | 日韩在线中文字幕 | 亚洲电影免费 | 亚洲在线观看视频 | 久久久毛片 | 98色花堂最新地址网址 | 日韩一区二区三区电影 | 最污网站 | 国产网址| 久久一二三区 | 亚洲一区欧美二区 | 天堂аⅴ在线最新版在线 | 国产在线资源 | 91插插视频 | 国产精品久久久久久久免费软件 | 亚洲乱码视频 | 玖玖精品 | 激情av在线 | 亚洲在线一区二区 | 毛片录像| 亚洲高清电影 | 日韩在线视频播放 | 亚洲国产视频一区 | 全免费一级毛片免费看 | 天堂网2021| 久久久午夜视频 | 99草在线| 精品伦精品一区二区三区视频 | 欧美区在线 | 免费一区二区视频 | 亚洲电影免费观看 | 男女在线观看视频 |