1 請(qǐng)說明 PHP 中傳值與傳引用的區(qū)別。什么時(shí)候傳值什么時(shí)候傳引用?
答: 傳值只是把某一個(gè)變量的值傳給了另一個(gè)變量,而引用則說明兩者指向了同一個(gè)地方。
2 在PHP中error_reporting這個(gè)函數(shù)有什么作用?
答: The error_reporting() function sets the error_reporting directive at runtime. PHP has many levels of errors, using this function sets that level for the duration (runtime) of your script.
3 請(qǐng)用正則表達(dá)式(Regular Expression)寫一個(gè)函數(shù)驗(yàn)證電子郵件的格式是否正確。
答:
php
if(isset($_POST['action']) &&
$_POST['action']==’submitted’)
{
$email=$_POST['email'];
if(!preg_match(“/^(?:w .?)*w @(?:w .?)*w $/”,$email))
{
echo
“電子郵件檢測失敗”;
}
else
{
echo
“電子郵件檢測成功”;
}
}
else
{
?>
EMAIL檢測title>
function checkEmail(sText)
{
var reg=/^(?:w .?)*w @(?:w .?)*w $/;
var email=document.getElementById(sText).value;
if(!reg.test(email))
{
alert('電子郵件檢測失敗');
}
else
{
alert('電子郵件格式正確');
}
}
script>
head>
電子郵件:
<input type='text' id='email' name='email'
/>
<input type='hidden' name='action' value='submitted'
/>
<input type='button' name='button' value='客戶端檢測' onclick='checkEmail('email')'
/>
<input type='submit' name='submit' value='服務(wù)器端檢測'
/>
form>
body>
html>
php
}
?>
4 簡述如何得到當(dāng)前執(zhí)行腳本路徑,包括所得到參數(shù)。
php
echo
'http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
//echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
?>
5 有一個(gè)一維數(shù)組,里面存儲(chǔ)整形數(shù)據(jù),請(qǐng)寫一個(gè)函數(shù),將他們按從大到小的順序排列。要求執(zhí)行效率高。并說明如何改善執(zhí)行效率。(該函數(shù)必須自己實(shí)現(xiàn),不能使用php函數(shù))
php
function BubbleSort(&$arr)
{
$cnt=count($arr);
$flag=1;
for($i=0;$i<$cnt;$i )
{
if($flag==0)
{
return;
}
$flag=0;
for($j=0;$j<$cnt-$i-1;$j )
{
if($arr[$j]>$arr[$j 1])
{
$tmp=$arr[$j];
$arr[$j]=$arr[$j 1];
$arr[$j 1]=$tmp;
$flag=1;
}
}
}
}
$test=array(1,3,6,8,2,7);
BubbleSort($test);
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img]var_dump($test);
[img]http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif[/img]?>
6 請(qǐng)舉例說明在你的開發(fā)過程中用什么方法來加快頁面的加載速度
答:要用到服務(wù)器資源時(shí)才打開,及時(shí)關(guān)閉服務(wù)器資源,數(shù)據(jù)庫添加索引,頁面可生成靜態(tài),圖片等大文件單獨(dú)服務(wù)器。使用代碼優(yōu)化工具啦
1.以下哪一句不會(huì)把 John 新增到 users 陣列?
$users[] = 'john';
成功把 John 新增到陣列 users。
array_add($users,’john’);
函式 array_add() 無定義。
array_push($users,‘john’);
成功把 John 新增到陣列 users。
$users ||= 'john';
語法錯(cuò)誤。
2.sort()、assort()、和 ksort() 有什么分別?它們分別在什么情況下使用?
sort()
根據(jù)陣列中元素的值,以英文字母順序排序,索引鍵會(huì)由 0 到 n-1 重新編號(hào)。主要是當(dāng)陣列索引鍵的值無關(guān)疼癢時(shí)用來把陣列排序。
assort()
PHP 沒有 assort() 函式,所以可能是 asort() 的筆誤。
asort()
與 sort() 一樣把陣列的元素按英文字母順序來排列,不同的是所有索引鍵都獲得保留,特別適合替聯(lián)想陣列排序。
ksort()
根據(jù)陣列中索引鍵的值,以英文字母順序排序,特別適合用于希望把索引鍵排序的聯(lián)想陣列。
3.以下的代碼會(huì)產(chǎn)生什么?為什么?
$num =10;
function multiply(){
$num =$num *10;
}
multiply();
echo $num;
由于函式 multiply() 沒有指定 $num 為全域變量(例如 global $num 或者 $_GLOBALS['num']),所以 $num 的值是 10。
4. reference 跟一個(gè)正規(guī)的變量有什么分別?如何 pass by reference?在什么情況下我們需要這樣做?
Reference 傳送的是變量的地址而非它的值,所以在函式中改變一個(gè)變量的值時(shí),整個(gè)應(yīng)用都見到這個(gè)變量的新值。
一個(gè)正規(guī)變量傳送給函式的是它的值,當(dāng)函式改變這個(gè)變量的值時(shí),只有這個(gè)函式才見到新值,應(yīng)用的其他部分仍然見到舊值。
$myVariable = 'its' value';
Myfunction(&$myVariable); // 以 reference 傳送參數(shù)以 reference 傳送參數(shù)給函式,可以使函式改變了的變量,即使在函式結(jié)束后仍然保留新值。
5.些函式可以用來在現(xiàn)正執(zhí)行的腳本中插入函式庫?
對(duì)這道題目不同的理解會(huì)有不同的答案,我的第一個(gè)想法是插入 PHP 函式庫不外乎 include()、include_once()、require()、require_once(),但細(xì)心再想,“函式庫”也應(yīng)該包括 com 物件和 .net 函式庫,所以我們的答案也要分別包括 com_load 和 dotnet_load,下次有人提起“函式庫”的時(shí)候,別忘記這兩個(gè)函式。
6.foo() 與 @foo() 有什么分別?
foo() 會(huì)執(zhí)行這個(gè)函式,任何解譯錯(cuò)誤、語法錯(cuò)誤、執(zhí)行錯(cuò)誤都會(huì)在頁面上顯示出來。
@foo() 在執(zhí)行這個(gè)函式時(shí),會(huì)隱藏所有上述的錯(cuò)誤訊息。
很多應(yīng)用程式都使用 @mysql_connect() 和 @mysql_query 來隱藏 mysql 的錯(cuò)誤訊息,我認(rèn)為這是很嚴(yán)重的失誤,因?yàn)殄e(cuò)誤不該被隱藏,你必須妥善處理它們,可能的話解決它們。
7.你如何替 PHP 的應(yīng)用程式偵錯(cuò)?
我并不常這樣做,我曾經(jīng)試過很多不同的偵錯(cuò)工具,在 Linux 系統(tǒng)中設(shè)定這些工具一點(diǎn)也不容易。不過以下我會(huì)介紹一個(gè)近來頗受注目的偵錯(cuò)工具。
PHP - Advanced PHP Debugger 或稱 PHP - APD,第一步是執(zhí)行以下的指令安裝:
pear install apd安裝后在你的腳本的開頭位置加入以下的語句開始進(jìn)行偵錯(cuò):
apd_set_pprof_trace();執(zhí)行完畢,打開以下檔案來查閱執(zhí)行日志:
apd.dumpdir
你也可以使用 pprofp 來格式化日志。
詳細(xì)的資料可以參閱 http://us.php.net/manual/en/ref.apd.php。
8.“===”是什么?試舉一個(gè)“==”是真但“===”是假的例子。
“===”是給既可以送回布爾值“假”,也可以送回一個(gè)不是布爾值但卻可以賦與“假”值的函式,strpos() 和 strrpos() 便是其中兩個(gè)例子。
問題的第二部份有點(diǎn)困難,想一個(gè)“==”是假,但是“===”是真的例子卻很容易,相反的例子卻很少。但我終于找到以下的例子:
if (strpos('abc', 'a') == true){ // 這部分永不會(huì)被執(zhí)行,因?yàn)?'a' 的位置是 0,換算成布爾值“假”}if (strpos('abc', 'a') === true){ // 這部份會(huì)被執(zhí)行,因?yàn)椤?==”保證函式 strpos() 的送回值不會(huì)換算成布爾值.}
9.你會(huì)如何定義一個(gè)沒有成員函式或特性的類別 myclass?
class myclass{}
10.你如何產(chǎn)生一個(gè) myclass 的物件?
$obj = new myclass();
11.在一個(gè)類別內(nèi)如何存取這個(gè)類別的特性及變改它的值?
使用語句:$this->propertyName,例如:
class myclass{ private $propertyName; public function __construct() { $this->propertyName = 'value'; }}
12.include 和 include_once 有什么分別?require 又如何?
三者都是用來在腳本中插入其他檔案,視乎 url_allow_fopen 是否核準(zhǔn),這個(gè)檔案可以從系統(tǒng)內(nèi)部或外部取得。但他們之間也有微細(xì)的分別:
include():這個(gè)函式容許你在腳本中把同一個(gè)檔案插入多次,若果檔案不存在,它會(huì)發(fā)出系統(tǒng)警告并繼續(xù)執(zhí)行腳本。
include_once():它跟 include() 的功能相似,正如它的名字所示,在腳本的執(zhí)行期間,有關(guān)檔案只會(huì)被插入一次。
require():跟 include() 差不多,它也是用來在腳本中插入其他檔案,但若果檔案不存在,它會(huì)發(fā)出系統(tǒng)警告,這個(gè)警告會(huì)引致致命錯(cuò)誤令腳本中止執(zhí)行
13.以下哪一個(gè)函式可以把瀏覽器轉(zhuǎn)向到另一個(gè)頁面?
redir()
這不是一個(gè) PHP 函式,會(huì)引致執(zhí)行錯(cuò)誤。
header()
這個(gè)是正確答案,header() 用來插入卷頭資料,可以用來使瀏覽器轉(zhuǎn)向到另一個(gè)頁面,例如:
header('Location: http://www.search-this.com/');
location()
這不是一個(gè) PHP 函式,會(huì)引致執(zhí)行錯(cuò)誤。
redirect()
這不是一個(gè) PHP 函式,會(huì)引致執(zhí)行錯(cuò)誤。
14.以下哪一個(gè)函式可以用來開啟檔案以便讀/寫?
fget()
這不是一個(gè) PHP 函式,會(huì)引致執(zhí)行錯(cuò)誤。
file_open()
這不是一個(gè) PHP 函式,會(huì)引致執(zhí)行錯(cuò)誤。
fopen()
這是正確答案,fopen() 可以用來開啟檔案以便讀/寫,事實(shí)上這個(gè)函式還有很多選項(xiàng),詳細(xì)資料請(qǐng)參閱 php.net。
open_file()
這不是一個(gè) PHP 函式,會(huì)引致執(zhí)行錯(cuò)誤。
15.mysql_fetch_row() 和 mysql_fetch_array() 有什么分別?
mysql_fetch_row() 把數(shù)據(jù)庫的一列儲(chǔ)存在一個(gè)以零為基數(shù)的陣列中,第一欄在陣列的索引 0,第二欄在索引 1,如此類推。mysql_fetch_assoc() 把數(shù)據(jù)庫的一列儲(chǔ)存在一個(gè)關(guān)聯(lián)陣列中,陣列的索引就是欄位名稱,例如我的數(shù)據(jù)庫查詢送回“first_name”、“l(fā)ast_name”、 “email”三個(gè)欄位,陣列的索引便是“first_name”、“l(fā)ast_name”和“email”。mysql_fetch_array() 可以同時(shí)送回 mysql_fetch_row() 和 mysql_fetch_assoc() 的值。
16.下面的代碼用來做什么?請(qǐng)解釋。
$date='08/26/2003';print ereg_replace('([0-9] )/([0-9] )/([0-9] )','\\2/\\1/\\3',$date);
這是把一個(gè)日期從 MM/DD/YYYY 的格式轉(zhuǎn)為 DD/MM/YYYY 格式。我的一個(gè)好朋友告訴我可以把這個(gè)正規(guī)表達(dá)式拆解為以下的語句,對(duì)于如此簡單的表示是來說其實(shí)無須拆解,純粹為了解說的方便:
// 對(duì)應(yīng)一個(gè)或更多 0-9,后面緊隨一個(gè)斜號(hào)$regExpression = '([0-9] )/';// 應(yīng)一個(gè)或更多 0-9,后面緊隨另一個(gè)斜號(hào)$regExpression .= '([0-9] )/';// 再次對(duì)應(yīng)一個(gè)或更多 0-9$regExpression .= '([0-9] )';至于 \\2/\\1/\\3 則是用來對(duì)應(yīng)括號(hào),第一個(gè)括號(hào)對(duì)的是月份,第二個(gè)括號(hào)對(duì)應(yīng)的是日期,第三個(gè)括號(hào)對(duì)應(yīng)的是年份。
17.給你一行文字 $string,你會(huì)如何編寫一個(gè)正規(guī)表達(dá)式,把 $string 內(nèi)的 HTML 標(biāo)簽除去?
首先,PHP 有內(nèi)建函式 strip_tags() 除去 HTML 標(biāo)簽,為何要自行編寫正規(guī)表達(dá)式?好了,便當(dāng)作是面試的一道考題吧,我會(huì)這樣回答:
$stringOfText = '
This is a test
';$expression = '/(.*?)/';echo preg_replace($expression, '\\2', $stringOfText);// 有人說也可以使用 /(]*>)/ $expression = '/(]*>)/';echo preg_replace($expression, '', $stringOfText);
18.PHP 和 Perl 分辨陣列和散列表的方法有什么差異?
這正是為何我老是告訴別人選擇適當(dāng)?shù)木幊陶Z言,若果你只用一種語言的話你怎么能回答這道問題?這道問題很簡單,Perl 所有陣列變量都是以 @ 開頭,例如 @myArray,PHP 則沿用 $ 作為所有變量的開頭,例如 $myArray。
至于 Perl 表示散列表則用 %,例如 %myHash,PHP 則沒有分別,仍是使用 $,例如 $myHash。
19.你如何利用 PHP 解決 HTTP 的無狀態(tài)本質(zhì)?
最主要的倆各選擇是 session 和 cookie。使用 session 的方法是在每一頁的開始加上 session_start(),然后利用 $_SESSION 散列表來儲(chǔ)存 session 變量。至于 cookie 你只需記著一個(gè)原則:在輸出任何文字之前調(diào)用 set_cookie() 函式,此外只需使用 $_COOKIE 散列表便可以存取所有 cookie 變量。
還有一個(gè)不那么可靠的方法,就是利用訪客的 IP 地址,這個(gè)方法有特定的危險(xiǎn)性。
20.GD 函式庫用來做什么?
這個(gè)可能是我最喜歡的函式庫,自從 PHP 4.3.0 版本后 GD 便內(nèi)建在 PHP 系統(tǒng)中。這個(gè)函式庫讓你處理和顯示各式格式的圖檔,它的另一個(gè)常見用途是制作所圖檔。GD 以外的另一個(gè)選擇是 ImageMagick,但這個(gè)函式庫并不內(nèi)建于 PHP 之中,必須由系統(tǒng)管理員安裝在伺服器上。
21.試寫出幾個(gè)輸出一段 HTML 代碼的方法。
嗯,你可以使用 PHP 中任何一種輸出語句,包括 echo、print、printf,大部分人都使用如下例的 echo:
echo 'My string $variable';你也可以使用這種方法:
echo << HTML tags in here as well. The END; remarks must be on a line of its own, and can't contain any extra white space.END;
22.PHP 比 Perl 好嗎?請(qǐng)討論。
我們不要為一個(gè)簡單的問題引發(fā)一場舌戰(zhàn),正如我經(jīng)常說的:“為工作選擇適合的語言,不要把工作遷就語言。”我個(gè)人認(rèn)為 Perl 十分適合用作命令行工具,雖然它在網(wǎng)頁應(yīng)用上也有不錯(cuò)的表現(xiàn),但是它的真正實(shí)力在命令行上才能充分發(fā)揮。同樣地,PHP 雖然可以在控制臺(tái)的環(huán)境中使用,但是個(gè)人認(rèn)為它在網(wǎng)頁應(yīng)用上有更好的表現(xiàn),PHP 有大量專門為網(wǎng)頁應(yīng)用而設(shè)計(jì)的函式,Perl 則似乎以命令行為設(shè)計(jì)之本。
個(gè)人來說兩種語言我都喜歡,在大學(xué)期間我經(jīng)常使用 Perl、PHP 和 Java,可惜工作上我使用 C#,但在家里我花不少時(shí)間操練 PHP、Perl、Ruby(現(xiàn)正學(xué)習(xí))和 Java,保持我的技能知識(shí)在最新狀態(tài)。很多人問我 C 和 C 怎么樣,它們是否仍有機(jī)會(huì)在我的應(yīng)用中占一席位,我的答案基本上是“否”,我近來的工作主要集中在網(wǎng)頁開發(fā),雖然 C 和 C 也可以用來寫網(wǎng)頁,但它們到底不是為這種工作而設(shè)計(jì)的,“為工作選擇適合的語言”,若果我需要編寫一個(gè)控制臺(tái)應(yīng)用,用來展示 bubble sort、quick sort 和 merge sort 的效能比較,我一定會(huì)使用 C / C 。若果我需要編寫一個(gè)相片簿系統(tǒng),我會(huì)使用 PHP 或者 C#(我認(rèn)為制作用戶介面方面 .NET 語言比網(wǎng)頁更加)。
.在PHP中,當(dāng)前腳本的名稱(不包括路徑和查詢字符串)記錄在預(yù)定義變量(1)中;而鏈接到當(dāng)前頁面的的前一頁面URL記錄在預(yù)定義變量(2)中 //本頁地址,SCRIPT_NAME也可以:php/test.php
echo $_SERVER['PHP_SELF'].'
';
//鏈接到當(dāng)前頁面的前一頁面的 URL 地址:
echo $_SERVER['HTTP_REFERER'].'
';
//其它的見參考手冊(cè):語言參考》變量》預(yù)定義變量
//前執(zhí)行腳本的絕對(duì)路徑名:D:Inetpubwwwrootphp est.php
echo $_SERVER['SCRIPT_FILENAME'].'
';
//正在瀏覽當(dāng)前頁面用戶的 IP 地址:127.0.0.1
echo $_SERVER['REMOTE_ADDR'].'
';
//查詢(query)的字符串(URL 中第一個(gè)問號(hào) ? 之后的內(nèi)容):id=1&bi=2
echo $_SERVER['QUERY_STRING'].'
';
//當(dāng)前運(yùn)行腳本所在的文檔根目錄:d:inetpubwwwroot
echo $_SERVER['DOCUMENT_ROOT'].'
';
?>
2.執(zhí)行程序段將輸出__。
//參考手冊(cè)》語言參考》運(yùn)算符》算術(shù)運(yùn)算符》%為取模運(yùn)算,輸出0
echo 8%(-2).'
';
//取模 $a % $b 在 $a 為負(fù)值時(shí)的結(jié)果也是負(fù)值。輸出-2
echo ((-8)%3).'
';
//輸出2
echo (8%(-3)).'
';
?>
3.在HTTP 1.0中,狀態(tài)碼 401 的含義是____;如果返回“找不到文件”的提示,則可用 header 函數(shù),其語句為____。
答:401表示未授權(quán);header('HTTP/1.0 404 Not Found');[見參考手冊(cè)》函數(shù)參考》HTTP函數(shù)》header]
4.數(shù)組函數(shù) arsort 的作用是____;語句 error_reporting(2047)的作用是____。
答:arsort:對(duì)數(shù)組進(jìn)行逆向排序并保持索引關(guān)系 error_reporting(2047)的作用是:report All errors and warnings
5.寫出一個(gè)正則表達(dá)式,過慮網(wǎng)頁上的所有JS/VBS腳本(即把script標(biāo)記及其內(nèi)容都去掉):
$script='以下內(nèi)容不顯示:';
echo preg_replace('/].*?>.*?/si', '替換內(nèi)容', $script);
?>
6.以Apache模塊的方式安裝PHP,在文件http.conf中首先要用語句____動(dòng)態(tài)裝載PHP模塊,
然后再用語句____使得Apache把所有擴(kuò)展名為php的文件都作為PHP腳本處理。
答:LoadModule php5_module 'c:/php/php5apache2.dll';AddType application/x-httpd-php .php
見參考手冊(cè)》目錄》II. 安裝與配置》6. Windows 系統(tǒng)下的安裝》Microsoft Windows 下的 Apache 2.0.x
7.語句 include 和 require 都能把另外一個(gè)文件包含到當(dāng)前文件中,它們的區(qū)別是____;為了避免多次包含同一文件,可以用語句____來代替它們。
答:在如何處理失敗時(shí),include() 產(chǎn)生一個(gè)警告而 require() 則導(dǎo)致一個(gè)致命錯(cuò)誤;require_once()/include_once()
8.一個(gè)函數(shù)的參數(shù)不能是對(duì)變量的引用,除非在php.ini中把____設(shè)為on.
答:allow_call_time_pass_reference boolean :是否啟用在函數(shù)調(diào)用時(shí)強(qiáng)制參數(shù)被按照引用傳遞, 見參考手冊(cè)》附錄G
9.SQL 中LEFT JOIN的含義是__,如果 tbl_user記錄了學(xué)生的姓名(name)和學(xué)號(hào)(ID),
tbl_score記錄了學(xué)生(有的學(xué)生考試以后被開除了,沒有其記錄)的學(xué)號(hào)(ID)和考試成績(score)以及考試科目(subject),要想打印出各個(gè)學(xué)生姓名及對(duì)應(yīng)的的各科總成績,則可以用SQL語句____.
答:自然左外連接
create database phpinterview;
use phpinterview
create table tbl_user
(
ID int not null,
name varchar(50) not null,
primary key (ID)
);
create table tbl_score
(
ID int not null,
score dec(6,2) not null,
subject varchar(20) not null
);
insert into tbl_user (ID, name) values (1, 'beimu');
insert into tbl_user (ID, name) values (2, 'aihui');
insert into tbl_score (ID, score, subject) values (1, 90, '語文');
insert into tbl_score (ID, score, subject) values (1, 80, '數(shù)學(xué)');
insert into tbl_score (ID, score, subject) values (2, 86, '數(shù)學(xué)');
insert into tbl_score (ID, score, subject) values (2, 96, '語文');
select A.id,sum(B.score) as sumscore
from tbl_user A left join tbl_score B
on A.ID=B.ID
group by A.id
10. 在PHP中,heredoc是一種特殊的字符串,它的結(jié)束標(biāo)志必須____
答:結(jié)束標(biāo)識(shí)符所在的行不能包含任何其它字符除';'
11.寫一個(gè)函數(shù),能夠遍歷一個(gè)文件夾下的所有文件和子文件夾。
function my_scandir($dir)
{
$files=array();
if(is_dir($dir))
{
if($handle=opendir($dir))
{
while(($file=readdir($handle))!==false)
{
if($file!='.' && $file!='..')
{
if(is_dir($dir.'/'.$file))
{
$files[$file]=my_scandir($dir.'/'.$file);
}
else
{
$files[]=$dir.'/'.$file;
}
}
}
closedir($handle);
return $files;
}
}
}
print_r(my_scandir('D:Program FilesInternet ExplorerMUI'));
?>
1、用PHP打印出前一天的時(shí)間,格式是2006-5-10 22:21:21
echo date('Y:m:d H:i:s',strtotime('-1 day'));
?>
2、echo(),print(),print_r()的區(qū)別
echo是語言結(jié)構(gòu),無返回值;print功能和echo基本相同,不同的是print是函數(shù),有返回值;print_r是遞歸打印,用于輸出數(shù)組對(duì)象
3、能夠使HTML和PHP分離開使用的模板
so much,其實(shí)PHP本身就是一種模版引擎,我用過的是smarty,常見的還有PHPLib,FastTemplate,Savant
4.如何實(shí)現(xiàn)PHP、JSP交互?
題目有點(diǎn)含糊不清,SOAP,XML_RPC,Socket function,CURL都可以實(shí)現(xiàn)這些,如果是考PHP和Java的整合,PHP內(nèi)置了這種機(jī)制(如果考PHP和.NET的整合,也可以這么回答), 例如$foo = new Java('java.lang.System');
5.使用哪些工具進(jìn)行版本控制?
CVS和SVN,SVN號(hào)稱下一代CVS,功能強(qiáng)大,不過CVS是老牌,市占率很高.我一直用SVN,題目是問用什么工具,呃,這個(gè)可能需要這么 回答:CVS Server on Apache作服務(wù)端,WinCVS作客戶端;Subversion on Apache/DAV 做服務(wù)端,TortoiseSVN做客戶端,或者Subclipse做客戶端
6.如何實(shí)現(xiàn)字符串翻轉(zhuǎn)?
function reverse($var)
{
$res='';
for($i=0,$j=strlen($var);$i<$j;$i )
{
$res=$var[$i].$res;
}
return $res;
}
$tmpvar='wofang';
$res=reverse($tmpvar);
echo $res;
?>
7、優(yōu)化MYSQL數(shù)據(jù)庫的方法。
(1).數(shù)據(jù)庫設(shè)計(jì)方面,這是DBA和Architect的責(zé)任,設(shè)計(jì)結(jié)構(gòu)良好的數(shù)據(jù)庫,必要的時(shí)候,去正規(guī)化(英文是這個(gè):denormalize,中文翻譯成啥我不知道),允許部分?jǐn)?shù)據(jù)冗余,避免JOIN操作,以提高查詢效率
(2).系統(tǒng)架構(gòu)設(shè)計(jì)方面,表散列,把海量數(shù)據(jù)散列到幾個(gè)不同的表里面.快慢表,快表只留最新數(shù)據(jù),慢表是歷史存檔.集群,主服務(wù)器Read & write,從服務(wù)器read only,或者N臺(tái)服務(wù)器,各機(jī)器互為Master
(3).(1)和(2)超越PHP Programmer的要求了,會(huì)更好,不會(huì)沒關(guān)系.檢查有沒有少加索引
(4).寫高效的SQL語句,看看有沒有寫低效的SQL語句,比如生成笛卡爾積的全連接啊,大量的Group By和order by,沒有l(wèi)imit等等.必要的時(shí)候,把數(shù)據(jù)庫邏輯封裝到DBMS端的存儲(chǔ)過程里面.緩存查詢結(jié)果,explain每一個(gè)sql語句
(5).所得皆必須,只從數(shù)據(jù)庫取必需的數(shù)據(jù),比如查詢某篇文章的評(píng)論數(shù),select count(*) ... where article_id = ? 就可以了,不要先select * ... where article_id = ?然后msql_num_rows.
只傳送必須的SQL語句,比如修改文章的時(shí)候,如果用戶只修改了標(biāo)題,那就update ... set title = ? where article_id = ?不要set content = ?(大文本)
(6).必要的時(shí)候用不同的存儲(chǔ)引擎.比如InnoDB可以減少死鎖.HEAP可以提高一個(gè)數(shù)量級(jí)的查詢速度
8、談?wù)勈聞?wù)處理
A給B的賬戶轉(zhuǎn)賬50美元的例子
9、apache mysql php實(shí)現(xiàn)最大負(fù)載的方法
見7
10.實(shí)現(xiàn)中文字串截取無亂碼的方法。
mb_substr()
11.
$empty = '';
$null = NULL;
$bool = FALSE;
$notSet;
$array = array();
//以下是問題
$a = 'hello';
$b = &$a;
unset($b);
$b = 'world';
//答案為:hello
echo $a;
?>
12.
$empty = '';
$null = NULL;
$bool = FALSE;
$notSet;
$array = array();
//以下是問題
$a = 1;
$x = &$a;
$b = $a ;
//以下為答案:1
echo $b;
?>
13
$empty = '';
$null = NULL;
$bool = FALSE;
$notSet;
$array = array();
//以下是問題
$x = empty($array);
//以下為答案:true
echo $x?'true':'false';
?>
14、用PHP寫出顯示客戶端IP與服務(wù)器IP的代碼:
$ip=gethostbyname ('');
echo $ip;