- 相關推薦
PHP基礎語言方面的筆試題和答案
伴隨著Facebook的成功,PHP這門解釋型的Web開發(fā)語言由于其清晰的定位繼續(xù)受到非常多的關注,當然對于中小企業(yè)和個人來說,Linux+Apache/Nginx+PHP+MySQL幾乎不用考慮服務器環(huán)境方面的成本;而對于開發(fā)者來說,在中小型項目開發(fā)中PHP也非常容易上手。以下是百分網(wǎng)小編精心為大家整理的PHP基礎語言方面的筆試題和答案,希望對大家有所幫助!更多內(nèi)容請關注應屆畢業(yè)生網(wǎng)!
1. 用PHP打印出前一天的時間,格式是2006-5-10 22:21:21
echo date("Y-m-d H:i:s",time()-60*60*24);
echo date("Y-m-d H:i:s",strtotime("-1 day"));
?>
2. echo(),print(),print_r()的區(qū)別
echo 是語言結構,無返回值;print 功能和echo基本相同,不同的是print是函數(shù),有返回值;print_r 是遞歸打印,用于輸出數(shù)組對象。
3. 能夠使HTML和PHP分離開使用的模板引擎
PHP模板引擎和框架是PHP面試題里面必考的一些知識點,總的來說,了解smarty或者國內(nèi)比較不錯的ThinkPHP都可以應對這類的問題,其實PHP這門語言本身也就是一個模板引擎。當然對實際應用的來說,大量使用正則的PHP模板引擎會提高后他開發(fā)和前端開發(fā)的效率,但是肯定會犧牲首次加載的效率。我在一位大牛的文章中看到過Blitz這個模板引擎,據(jù)說是使用C++寫的PHP擴展,號稱是速度最快的模板引擎,有興趣的可以去了解一下。
4. 如何實現(xiàn)字符串翻轉(zhuǎn)?
PHP本身就有字符串翻轉(zhuǎn)的函數(shù):strrev(),當然也可以定義簡單的函數(shù)來完成,下面的方法一和方法二只能翻轉(zhuǎn)非漢字字符串,方法三用來翻轉(zhuǎn)字符串。
//方法一:PHP系統(tǒng)函數(shù)
echo strrev("ABCDEF")."
";
//方法二:自定義函數(shù),不能翻轉(zhuǎn)漢字。
function myStrrev($str)
{
$newStr = "";
for($i=0;$i
{
$newStr = $str[$i].$newStr;
}
return $newStr;
}
echo myStrrev("ABCDEF")."
";
//方法三,翻轉(zhuǎn)漢字
$newcnStr ="";
$cnStr = str_split("我愛你",3);//每個漢字占3個字節(jié)
//也可以使用array_reverse()翻轉(zhuǎn)后輸出
for($j=count($cnStr)-1;$j>=0;$j--)
{
$newcnStr .=$cnStr[$j];
}
echo $newcnStr;
?>
5. 執(zhí)行程序段將輸出__?
//參考手冊》語言參考》運算符》算術運算符》%為取模運算,輸出0
echo 8%(-2)."
";
//取模 $a % $b 在 $a 為負值時的結果也是負值。輸出-2
echo ((-8)%3)."
";
//輸出2
echo (8%(-3))."
";
?>
6. 語句 include 和 require 都能把另外一個文件包含到當前文件中,它們的區(qū)別是____;為了避免多次包含同一文件,可以用語句____來代替它們?
答:在如何處理失敗時,include() 產(chǎn)生一個警告而 require() 則導致一個致命錯誤;require_once()/include_once()
7. 寫一個函數(shù),能夠遍歷一個文件夾下的所有文件和子文件夾。
別人寫的代碼,已經(jīng)足夠簡潔和給力了。
[php] view plain copy print?
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;
}
}
}
echo "
";
print_r(my_scandir("D:\DouJia-3.5"));
?>
8. 你如何利用 PHP 解決 HTTP 的無狀態(tài)本質(zhì)?
最主要的倆各選擇是session和cookie。使用session的方法是在每一頁的開始加上 session_start(),然后利用$_SESSION散列表來儲存session變量。至于cookie你只需記著一個原則:在輸出任何文字之前調(diào)用set_cookie()函式,可以參考PHP會話管理之Cookie的使用,此外只需使用 $_COOKIE 散列表便可以存取所有 cookie 變量。
還有一個不那么可靠的方法,就是利用訪客的 IP 地址,這個方法有特定的危險性。
9. 有一個一維數(shù)組,里面存儲整形數(shù)據(jù),請寫一個函數(shù),將他們按從大到小的順序排列,要求執(zhí)行效率高,并說明如何改善執(zhí)行效率(該函數(shù)必須自己實現(xiàn),不能使用php函數(shù))。
學習C語言的時候各種排序方法是必須掌握的基本概念,尤其是冒泡排序法是程序員都很熟悉的算法,其他的可以查看這篇很古老的文章:http://blog.csdn.net/rerli/archive/2003/12/15/19040.aspx,顯然C/C++里面的指針和堆可以實現(xiàn)一些快速高效但是不穩(wěn)定的算法,PHP里面保守一些還是采用穩(wěn)定性比較好,算法時間復雜度適中的冒泡排序法。
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);
echo "";
var_dump($test);
?>
10. 以下哪一句不會把 John 新增到 users 陣列?
PHP中一些數(shù)組函數(shù)和字符串函數(shù)是基礎中的基礎。
$users[] = "john";
//成功把 John 新增到陣列 users。
array_add($users,"john");
//函式 array_add() 無定義。
array_push($users,"john");
//成功把 John 新增到陣列 users,參考array_push()函數(shù)。
$users ||= "john";
//語法錯誤,不存在這個運算符。
?>
第一次總結,就這么多吧,有時間準備更讓我雞動的正則表達式和數(shù)據(jù)庫方面的試題。
【PHP基礎語言方面的筆試題和答案】相關文章:
Java語言基礎試題及答案06-06
PHP語言基礎知識07-16
PHP面試題及答案06-27
精選php面試題及答案06-01
護士資格基礎護理練習試題和答案09-28
流行的php面試題及答案09-14
PHP基礎知識考試題08-15
PHP面試題及答案(匯總)10-10
2017年基礎php面試題09-01
PHP語言常用的面試題10-19