PHP面試題整理

PHP的意思:
    php是一個基於服務端來建立動態網站的腳本語言,能夠用php和HTML
    生成網站主頁
什麼是面向對象?主要特徵是什麼?
    面向對象是程序的一種設計方式,它利於提升程序的重用性,使程序結構更加
清晰 主要特徵:封裝。繼承、多態
 
session 和 cookie的區別是什麼,請從協議,產生的緣由與做用說明?    參考連接:https://www.cnblogs.com/andy-zhou/p/5360107.html
    1.http 無狀態協議,不能區分用戶是不是從同一個網站上來的,同一個用戶請求
不一樣的頁面不能看作是同一個用戶
    2.session存儲在服務器端,cookie 保存在客戶端,session 比較安全,cookie用
某些手段能夠修改,不安全,session依賴於cookie進行傳遞。禁用cookie後,session不能正常
視同。
    session的缺點: 保存在服務器端,每次讀取都從服務器進行讀取,對服務器有資源消耗。session
保存在服務器端的文件或數據庫中,默認保存在文件中,文件路徑由php配置的文件的session.save
path指定。session文件是公有的
 
不使用cookie向客戶端發送一個cookie
    理解:session start( )開啓時,生成一個常量SID,當cookie開啓時,這個常量爲空,當COOKIE
關閉時,這個常量中存儲了PHP sessid的值。經過在url後加一個SID參數來傳遞SESSIONID的值
從而使客戶端頁面可使用session裏面的值,當客戶端開啓cookie和服務端開啓session時,瀏覽器
第一次請求,服務器會向瀏覽器發送一個cookie 裏面存儲sessionID,當瀏覽器二次請求時,會把已經
存在的cookie一塊兒提交到服務器端。
 
簡述Cookie的設置及獲取過程
    設置COOKIE的值:
                            Setcookie(名稱,值,保存時間,有效域)
     獲取值:
    $_COOKIE['名稱']
 
HTTP狀態中30二、40三、500、200、40四、502代碼含義
 
    一二三四五原則:一。消息系列
                               二。成功系列
                               三。重定向系列
                                四。請求錯誤系列
                                五。服務器端錯誤系列
    403:禁止訪問
    500:服務器內部錯誤
    401:表明未受權
    200:請求成功
    404:文件未找到
    502:服務器內部錯誤
 
請寫出數據類型(int char varchar datetime text)的意思;請問varchar 和 char有什麼區別
 
int 整數
char 定長字符
varchar 變長字符
Datetime 日期時間類型
Text 文本型
varchar 和 char 的區別
 
char是固定長度的字符類型,分配多少空間,就佔用多少空間
varchar 是可變長度的字符類型,內容有多少就佔多大的空間,能有效節省空間
varchar 是變長,節省存儲空間,char是固定長度
查找效率是char型快,由於varchar是非定長,必須先查找長度,而後進行數據的提取,比char定長
類型多了一個步驟
 
 
MyISAM 和InooDB 的基本區別?索引結構如何實現?
 
MyISAM 類型不支持事務處理等高級處理,而InnoDB類型支持,
MyISAM 類型的表強調的是性能,其執行速度比InnoDB類型更快,可是不提供事務
支持
而InnoDB提供事務支持以及外部鍵等高級數據庫功能
 
建立索引:alert table tablename add index (`字段名`)
 
isset() 和 empty()區別
 
    Isset 判斷變量是否存在,若是存在則返回真,empty 判斷變量是否爲空爲假
若是爲空爲假則返回真
 
include 與 require的區別      參考連接: https://blog.csdn.net/qiu1988yang/article/details/77709520
 
    1.include() 在執行文件時 每次都要進行讀取和評估,require() 文件只處理一次
    2.require()一般放在php腳本程序的最前面
    3.require()在程序解釋執行前被加載 include()則在解釋執行過程當中 include() 的使用和require()同樣,通常放在流程控制的處理區段中,php腳本
文件讀到include()語句時,纔將它包含的文件讀進來,這種方式能夠把程序執行的流程簡化
    4.include_once() 和require_once() 語句也是在腳本執行期間包括並運行文件
與include()和 require() 的惟一區別是文件中的代碼已經被包括了,則不會再次
被包括
惟一的差異在於 include_once() 函數會先檢查要導入的檔案是否是已經在該程序中的其它地方被導入過了,若是有的話就不會再次重複導入該檔案(這項功能有時候是很重要的,比方說要導入的檔案裏面宣告了一些你自行定義好的函數,那麼若是在同一個程序重複導入這個檔案,在第二次導入的時候便會發生錯誤訊息,由於 PHP 不容許相同名稱的函數被重複宣告第二次)
  1.     require ()包含文件失敗,中止執行,給出錯誤
  2. include()即便加載出錯,整個程序仍是繼續執行
    一個頁面聲明,另外一個頁面調用
    包含文件失敗,繼續向下執行,返回一條警告
 
PHP字符串中單引號與雙引號的區別?
 
單引號不能解釋變量,雙引號能夠解釋變量
單引號不能轉義字符,在雙引號中能夠轉義字符
 
請說明PHP中傳值與傳引用的區別。何時傳值何時傳引用
 
    按值傳遞:函數範圍內對值得任何改變在函數外部都會被忽略
    按引用傳遞:函數範圍內對值得任何改變在函數外部也能反映出這些修改
 
優缺點:按值傳遞時,php必須複製值,特別是對大型字符串和對象來講,這將會是
一個代價很大的操做  按引用傳遞則不須要複製值,對於性能提升有好處
 
 
面向對象中接口和抽象類的區別及應用場景
 
1.有抽象方法的類叫作抽象類,抽象類中不必定有抽象方法,抽象方法必須使用abstract關鍵字定義
2.接口中所有都是抽象方法,方法不用使用abstract定義
3.當多個同類的類要設計一個上層,一般設計爲抽象類,當多個異構的類要設計一個上層,一般設計爲接口
 
echo() print() print_r() 的區別
 
echo 是php 語句,print 和print_r 是函數,語句沒有返回值,函數能夠有返回值(即時沒有用)
print()只能打印出簡單類型變量的值(如 int string)
print_r()能夠打印出複雜類型變量的值(如數組,對象)
echo 輸出一個或多個字符串
 
mysql fetch row() 和 mysql fetch array 之間有什麼區別?
 
 
mysql_fetch_row() 以索引數組的方式取查詢的結果集 
mysql_frtch_array() 以索引數組和關聯數組兩種方式取查詢的結果集
 
請描述出兩點以上XHTML 和HTML 最顯著的區別  
 
(1)XHTML 必須強制指定文檔類型DocType HTML 不須要
(2)XHTML 全部標籤必須閉合,HTML比較隨意
 
HTTP協議中GET POST 和 HEAD 的區別
 
HEAD: 只請求頁面的首部
GET: 
POST:
(1)HTTP定義了與服務器交互的不一樣方法,最基本的是GET 和POST. 事實上GET適用於多數請求,而保留POST僅用於更新站點
(2)在FROM 提交的時候,若是不指定Method,則默認爲GET請求,From 中提交的數據將會附加在url以後
以?分開。字母數字字符原樣發送,但空格轉換爲 + 號 其餘符號轉換爲%XX 其中XX爲該符號以16進制標識的ASCII值。 
GET 請求提交的數據放置在HTTP請求協議頭中,
而POST提交的數據則放在實體數據中
GET 方式提交的數據最多隻能有1024字節,而POST沒有此限制
(3) GET 這個是 瀏覽器用語向服務器請求最經常使用的方法。POST這個方法也是用來傳送數據的,可是與
GET 不一樣的是,使用POST的時候,數據不是附在URL後面傳遞,而是要做爲獨立的行來傳遞 ,此時還必需要發送一個Content Length 標題 以標明數據長度,隨後一個空白行,而後就是實際傳送的數據,網頁的表單一般是用POST來傳送的
 
 
表單中get 與 post 提交方法的區別?
 
1.get是吧參數數據隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個字段一一對應
在URL中能夠看到
    post 是經過HTTP post 機制,將表單內各個字段與其內容放置在HTML HEADER 內一塊兒傳送到ACTION屬性
所指的URL地址。用戶看不到這一過程
2.對於get 方式,服務器端用Request.QueryString 獲取變量的值,對於post方式,服務器用Request.From 獲取提交的數據
3.get 傳送的數據量較小,不能大於2kb,post 傳送的數據量較大,通常被默認爲不受限制。但理論上,IIS4中最大量爲80KB,IIS5 中爲100KB
 
foo() 和 @foo()之間有什麼區別 
@foo()控制錯誤輸出  
 
 
線性表和順序表的區別?
 
1.線性表包括順序表和鏈表
2.順序表中的元素的地址是連續的,鏈表裏面節點的地址不是連續的,是經過指針連起來的
 
什麼是數據庫索引,主鍵索引,惟一索引的區別,索引的缺點是什麼?
索引用來快速地尋找那些具備特定值得記錄。
主鍵索引和惟一索引的區別:
                主鍵是一種惟一性索引,但它必須指定位「PRIMARY KEY」每一個表只能有一個主鍵
                惟一索引引列的全部值都只能出現一次,即必須惟一
索引的缺點:
                1.建立索引和維護索引要耗費時間,這種時間隨着數量的增長和增長
                2.索引須要佔物理空間, 除了數據表佔數據空間以外,每個索引還要佔必定的物理空間
                若是要創建聚簇索引,須要的空間就會更大
                3.當對錶中的數據進行增長。刪除、修改的時候。索引也要動態的維護,這樣就下降了數據的維護速度
 
瀏覽器IE 和非IE瀏覽器的劃分,區別是什麼?
 
IE瀏覽器值得是使用IE內核的瀏覽器,對一些W3C標準的網頁代碼支持不是很好
非IE瀏覽器指的是沒有使用IE內核的瀏覽器,對W3C標準的網頁代碼有很好的支持
 
數據庫中的事務是什麼?
    事務(transaction)是做爲一個單元的一組有序數據庫操做。若是組中的全部操做都成功
則認爲事務成功,即時只有一個操做失敗,事務也不成功。若是全部操做完成,則事務提交,其
修改將做用於其餘數據庫進程,若是一個操做失敗,則事務將回滾,該事務全部操做影響都將取消
 
解釋:左連接,右連接,內連接,索引
 
1.內鏈接僅選出兩張表中互相匹配的記錄,所以,這會致使有時咱們須要的的記錄沒有包含進來
    內部連接是兩個表中都必需要有連接字段的對應值的記錄,數據才能檢索出來
2.左連接和右連接都是外部鏈接,也就是區別於內部 鏈接,它對不知足條件的行並非像內部鏈接同樣將
    數據徹底過濾掉,而是保留一部分數據,行數不會減小
3.左鏈接是隻要左邊表中有記錄,數據就能檢索出來,而右邊有的記錄必要再左邊表中有的記錄才能被檢索
出來
4.右鏈接是隻要右邊表中有記錄,數據就能檢索出來
五、全鏈接則會返回兩個表中的全部記錄
 
簡述 xx中無限分類的實現原理
https://blog.csdn.net/fwkjdaghappy1/article/details/7645313
1.數據庫分類表的設計: id字段 、父id字段、類名稱字段、path字段
2.path字段存當前分類的路徑,格式:0,分類id,自己id
3.查詢分類:select * from 分類表 order by path asc;
4.這樣就查出來每一個分類及其對應的子類。
 
 
 
寫出三種以上MySQL數據庫存儲引擎的名稱
MyISAM  InnoDB  BDB  Merge Memory Example Federated Archive CSV Blackhole MaxDB
 
 
什麼是模板技術、可以使HTML和PHP分離開使用的模板?
 
模板技術就是使程序的邏輯代碼和界面分開的技術
可以使HTML 和PHP分開
 
實現中文字符串截取無亂碼的方法 
 
Mb_substr() 
 
數據庫索引有基類,分別是什麼?何時該用索引?
 
普通索引,主鍵索引,惟一索引
並不是全部的數據庫都以相同的方式使用索引,做爲通用規則,只有當常常查詢列中
的數據時才須要在表上建立索引
 
寫幾個魔術方法並說明做用?
__call() 當調用不存在的方法時會自動調用的方法
__autoload() 在實例化一個還沒有被定義的類時會自動調用其方法來加載類文件
__set() 當給未定義的變量賦值時會自動調用的方法
__get()當獲取未定義變量值時會自動調用的方法
__construct()構造方法,實例化類時自動調用的方法
__unset() 當對一個未定義變量調用unset()時自動調用的方法
__isset() 當對一個未定義變量調用issset()方法時自動調用的方法
__clone()克隆一個對象
__tostring()當輸出一個對象時自動調用的方法
 
$request、$post $get  $cookie $session $file 的意思是什麼?
 
它們都是php預約義變量
 
$_request 用來獲取post 或 get 方式提交的值
$_post 用來獲取post 方式提交的值
$_get 用來獲取get方式提交的值
$_cookie 用來獲取cookie存儲的值
$_session 用來獲取session存儲的值
$_file 用來獲取上傳文件表單的值
 
數組中下表最好是什麼類型,爲何
 
數組的下標最好是數字類型,數字類型的處理速度快
 
++i 和 i++哪一個效率高,爲何
++i 效率比 i++效率高,由於++i少了一個返回i 的過程
 
magic quotes gpc()  /  magic quotes runtime() 的意思是什麼
 
magic quotes gpc() 是 php配置文件中的,若是設置爲on 則會自動POST
GET COOKIE 中的字符串進行轉義 ,在‘以前加\
 
magic_quotes_runtime() 是php中的函數,若是參數爲TURE則會數據庫中
提取出來的單引號,雙引號,反斜線自動加上反斜槓進行轉義
 
框架中什麼是單一入口和多入口,單一入口的優缺點?
 
1.多入口就是經過訪問不一樣的文件來完成用戶請求
單一入口只web程序全部的請求都指向一個腳本文件的
 
2.單一入口更容易控制權限,方便對HTTP請求 能夠進行安全性檢查
 
缺點:url看起來不那麼美觀,特別是對搜索引擎來講不友好
 
 
你對Memcache的理解,優勢有哪些 
 
Memcache 是一種緩存技術,在必定的時間內將動態網頁解析以後保存到文件,
下次訪問時動態網頁就直接調用這個文件,而沒必要再從新訪問數據庫。
使用memcached作緩存的好處是: 提升網站訪問速度,減輕高併發時服務器的壓力
 
優勢:穩定,配置簡單,多機分佈式存儲,速度快
 
web應用中,數據庫的讀取頻率遠高於寫入頻率,如何優化MySQL而應對這種情景
 
使用memcached 緩存技術,將動態數據緩存到文件,訪問動態頁面時直接
調用緩存文件,而沒必要從新訪問數據庫,這樣就減小了查詢數據庫的次數
 
若是網站的訪問量很大,能夠吧數據庫讀寫服務器分開,使用多態服務器去處理數據庫
查詢,使用較少的服務器去處理數據庫的寫入和修改
 
數據庫設計時,常遇到的性能瓶頸有哪些,常有的解決方案?
 
瓶頸主要有:
1.磁盤搜索優化的方法是:將數據分佈在多個磁盤上
2.磁盤讀/寫 優化的方法是:從多個磁盤並行讀寫
3.cpu 週期優化方法:擴展內存
4.內存寬帶
 
請舉例說明在你的開發過程當中用什麼方法來加快頁面的加載速度
 
    要用到服務器資源時纔打開,及時關閉服務器資源,數據庫添加索引,頁面可生成靜態
圖片等大文件單獨服務器,使用代碼優化工具
 
描述一下大流量高併發量網站的解決方案
 
    1.確認服務器硬件是否足夠支持當前的流量
    2.使用memcache 緩存技術,將動態數據緩存到內存中,動態網頁直接調用這些文件,而沒必要再訪問數據庫
    三、禁止外部的盜鏈
    4.外部網站的圖片或者文件盜鏈每每會帶來大量負載壓力,所以應該嚴格限制外部對自身圖片或者文件盜鏈,
目前能夠簡單經過refer 來控制盜鏈,apache本身就能夠經過配置來禁止盜鏈
    5.控制大文件的下載 大文件的下載會佔用很大的流量,對於非SCSI硬盤來講會消耗,使得網站響應能力降低
    6.使用不一樣的主機分流主要流量,使服務器均衡負載
    7.使用流量統計軟件 在網站上安裝一個流量統計軟件,能夠即時知道哪些地方耗費了大量流量
哪些頁面須要進行優化
    8.分庫分表
    9.Sphinx全文搜索引擎
 
如何設計或配置Mysql 才能達到高效使用的目的
 
1.數據庫設計方面,設計結構良好的數據庫,運行部分數據冗餘
    選取最適用的字段屬性,儘量把字段設置爲NOT NULL 這樣在查詢的時候,數據庫
不用去比較NULL值
2.系統架構設計方面,表散列,把海量數據散列到幾個不一樣表裏面,集羣,數據庫查詢和寫入分開
寫高效sql語句,適用連接(join)來代替子查詢
使用聯合(union)來代替手動建立的臨時表
所得皆必須,只從數據庫取必須的數據
必要的時候用不一樣的存儲引擎,好比Innodb能夠減小死鎖,HEAP能夠提升一個數量級的查詢速度
使用事務
使用外健,使用索引
 
設定網站的用戶數量在千萬級,可是活躍用戶的數量只有1%,如何經過優化數據庫提升活躍用戶的訪問速度
 
咱們能夠根據用戶的活躍程度,把活躍的用戶提取出來放到另一張表裏面,每次活躍的用戶登陸
的時候就直接到活躍用戶表中進行查詢,這樣就提升了數據庫查詢速度
 
瞭解XSS攻擊嗎 如何防止
 
XSS是跨站腳本攻擊,首先是利用跨站腳本漏洞以一個特權模式去執行攻擊者構造的腳本,
而後利用不安全的Acticex控件執行惡意的行爲
使用htmlspecialchars()函數對提交的內容進行過濾,使字符串裏面的特殊符號實體化
 
SQL注入漏洞產生的緣由,如何防止
SQL注入產生的緣由:程序開發過程當中不注意規範書寫sql 語句和對特殊字符進行過濾,致使
客戶端能夠經過全局變量POST 和GET提交一些SQL語句正常執行
 
 
防止SQL注入
1.開啓配置文件中的magic_quotes_gpc 和 magic_quotes_runtime 設置
magic_quotes_gpc 開啓後將自動把用戶提交的sql語句的查詢進行轉換 把'轉換爲\  對sql注入有有重大做用
2.執行sql語句時使用addslashes進行sql 語句轉換
3.sql語句書寫儘可能不要省略小引號和單引號
4.過濾掉sql語句中的一些關鍵字
5.提升數據庫表和字段的命名技巧,對一些重要的字段根據程序的特定命名,取不易被猜到的
6.php配置文件中設置register_globals 爲OFF 關閉全局變量註冊
7.控制錯誤信息,不要再瀏覽器上輸出錯誤信息,將錯誤信息寫到日誌文件中
 
 
PHP加速模式/擴展? 調試工具
 
Zend Optimizer 加速擴展
調試工具: xdebug
 
經常使用MYSql命令
show databases
show tables
Insert into xx values()
update xx set 字段 = xx where
delete from xx where
select  * from xx where xx order by  desc/asc limit ..
group by ,, having ...
 
進入mysql 管理命令行的命令
 
Mysql -uroot -p 
 
顯示系統變量和值
show variables
 
請寫出 5個經常使用的unix操做命令
 
  1. ls -l 以長格式的形式查看當前目錄下全部可見文件的詳細屬性
  2. tar zxvf   xxx.tgz -c 指定目錄       解壓到指定目錄
  3. tar czvf    xxx.tgz  指定目錄          壓縮到指定目錄
  4. Cat     一次顯示整個文件  從鍵盤建立一個文件   合併爲一個文件
  5. mkdir   建立目錄
  6. rm   刪除
 
請寫出如下5個UNIX系統配置文件/服務的做用
 
/etc/passwd :    用戶信息文件,其中包含用戶名,用戶是否有密碼,用戶ID及用戶所屬組
/etc/hosts  :主機數據庫,包括IP地址,主機名 或域名 別名等信息,在此文件中添加記錄可繞過dns
/etc/fstab :保存了系統全部分區信息的配置文件
crontab 計劃任務命令
Sshd 遠程鏈接管理命令

請寫出5個經常使用的SQL操做關鍵字
 
select update delete insert into create  group by order by 
 
請列出5個經常使用的PHP操做 MuSQL的函數
 
一、Mysql_connect()
二、Mysql_select_db()
三、Mysql_query()
四、Mysql_fetch_row()
五、Mysql_close()
 
什麼是時間戳?如何取得當前時間戳?
 
時間戳是從1970年1月1日 00:00:00到指定日期的秒數
獲取當前時間戳;time()
 
 
有一個網頁地址,好比PHP開發資源網主頁:,如何獲得它的內容
 
獲取網頁內容:
$url = ""
$str = file_get_contents($url)
 
簡述如何獲得當前執行腳本路徑,包括所獲得的參數
 
$_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URL'] ;取得當前頁面的完整路徑和參數
 
取得參數: $_SERVER['QUERY_STRING']
 
如何用php的環境變量獲得一個網頁地址的內容,ip地址又要怎麼樣獲得?
 
echo $_server["PHP_SELF"];
echo $_server["SERVER_ADDR"]
 
求兩個日期的差數
 
$begin = strtotime("")
$end = strtotime("")
echo ($end - $begin) /(24*3600)
 
給一個變量賦值爲0123,可是輸出該變量的值老是爲其餘數字?
 
php解釋器會把以0開始的數字當作是八進制,因此他的值會變爲八進制
 
php裏面如何定義一個常量(constant)
 
經過define()指令  列如  define("".100)
 
在php裏面能夠對string "10" 和整型11進行比較嗎
 
能夠,php內部實現會把全部東西轉換成整型
 
在什麼狀況下須要用endif來結束條件語句
當if語句後面跟的是冒號:而不是大括號時
 
優化MYSQL數據庫的方法
 
1.選取最適用的字段屬性,儘量減小定義字段長度,儘可能把字段設置NOT null,列如省份,性別最好設置爲enum
2.使用鏈接(join)來代替子查詢
3.使用union來代替手動建立的臨時表
4.事務處理
5.鎖定表,優化事務處理
6.使用外鍵,優化鎖定表
 
PHP加速模式/擴展? 調試工具
 
Zend Optimizer 加速擴展
調試工具: xdebug
 
經常使用MYSql命令
show databases
show tables
Insert into xx values()
update xx set 字段 = xx where
delete from xx where
select  * from xx where xx order by  desc/asc limit ..
group by ,, having ...
 
進入mysql 管理命令行的命令
 
Mysql -uroot -p 
 
顯示系統變量和值
show variables
 
請寫出 5個經常使用的unix操做命令
 
  1. ls -l 以長格式的形式查看當前目錄下全部可見文件的詳細屬性
  2. tar zxvf   xxx.tgz -c 指定目錄       解壓到指定目錄
  3. tar czvf    xxx.tgz  指定目錄          壓縮到指定目錄
  4. Cat     一次顯示整個文件  從鍵盤建立一個文件   合併爲一個文件
  5. mkdir   建立目錄
  6. rm   刪除
 
請寫出如下5個UNIX系統配置文件/服務的做用
 
/etc/passwd :    用戶信息文件,其中包含用戶名,用戶是否有密碼,用戶ID及用戶所屬組
/etc/hosts  :主機數據庫,包括IP地址,主機名 或域名 別名等信息,在此文件中添加記錄可繞過dns
/etc/fstab :保存了系統全部分區信息的配置文件
crontab 計劃任務命令
Sshd 遠程鏈接管理命令

請寫出5個經常使用的SQL操做關鍵字
 
select update delete insert into create  group by order by 
 
請列出5個經常使用的PHP操做 MuSQL的函數
 
一、Mysql_connect()
二、Mysql_select_db()
三、Mysql_query()
四、Mysql_fetch_row()
五、Mysql_close()
 
什麼是時間戳?如何取得當前時間戳?
 
時間戳是從1970年1月1日 00:00:00到指定日期的秒數
獲取當前時間戳;time()
 
 
有一個網頁地址,好比PHP開發資源網主頁:,如何獲得它的內容
 
獲取網頁內容:
$url = ""
$str = file_get_contents($url)
 
簡述如何獲得當前執行腳本路徑,包括所獲得的參數
 
$_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URL'] ;取得當前頁面的完整路徑和參數
 
取得參數: $_SERVER['QUERY_STRING']
 
如何用php的環境變量獲得一個網頁地址的內容,ip地址又要怎麼樣獲得?
 
echo $_server["PHP_SELF"];
echo $_server["SERVER_ADDR"]
 
求兩個日期的差數
 
$begin = strtotime("")
$end = strtotime("")
echo ($end - $begin) /(24*3600)
 
給一個變量賦值爲0123,可是輸出該變量的值老是爲其餘數字?
 
php解釋器會把以0開始的數字當作是八進制,因此他的值會變爲八進制
 
php裏面如何定義一個常量(constant)
 
經過define()指令  列如  define("".100)
 
在php裏面能夠對string "10" 和整型11進行比較嗎
 
能夠,php內部實現會把全部東西轉換成整型
 
在什麼狀況下須要用endif來結束條件語句
當if語句後面跟的是冒號:而不是大括號時
 
優化MYSQL數據庫的方法
 
1.選取最適用的字段屬性,儘量減小定義字段長度,儘可能把字段設置NOT null,列如省份,性別最好設置爲enum
2.使用鏈接(join)來代替子查詢
3.使用union來代替手動建立的臨時表
4.事務處理
5.鎖定表,優化事務處理
6.使用外鍵,優化鎖定表
 
請以空格爲間隔,拆分字符串,組成數組$fruit, 
數組中因此元素都用小寫字母,並按照字母前後次序排序
 
<?php
class sort {
    private $str;
    public function __construct($str) {
        $this->str=strtolower($str);
    }
    private function explodes() {
        if(empty($this->str)) return array();
        $arr=explode(" ",$this->str);
        return is_array($arr)?$arr:array($arr);
    }
    public function sort() {
        $explode=$this->explodes();
        sort($explode);
        return $explode;
    }
}
$str='Apple Orange Banana Strawberry';
$sortob=new sort($str);
print_r($sortob);
var_dump($sortob->sort());
 
php程序使用utf-8編碼,如下程序輸出結果是什麼?
 
中文佔兩個字符
 
寫一個函數,儘量高效的,從一個標準的url中取出文件擴展名
function getExt($url){
$arr = parse_url($url);
$file = basename($arr['path']); //解析url 返回組成部
$ext = explode(".",file);//返回路徑中文件名部分
return $ext[1];
}
 
使用五種以上方式獲取一個文件的擴展名
 
function get_ext1($file_name){
return strrchr($file_name,'.'); //函數查找字符串在另外一個字符串中最後一次出現的位置,並返回從該位置到字符串結尾的全部字符。
}
 
function get_ext2($file_name){
return substr($file_name,strrpos($file_name, ‘.’));
//先找出最後後一次出現的位置,再截取從該位置開始到結尾的字符串
}
function get_ext3($file_name){
return array_pop(explode(‘.’, $file_name));
//array_pop() 函數刪除數組中的最後一個元素。
}
function get_ext4($file_name){
$p = pathinfo($file_name);
return $p['extension'];
//pathinfo() 函數以數組的形式返回關於文件路徑的信息。
}
function get_ext5($file_name){
return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), ‘.’)));
}
相關文章
相關標籤/搜索