php常用面试题及答案

时间:2022-12-18 19:25:30 作者:椰子奶冻 综合材料 收藏本文 下载本文

“椰子奶冻”通过精心收集,向本站投稿了11篇php常用面试题及答案,以下是小编收集整理后的php常用面试题及答案,仅供参考,希望对大家有所帮助。

篇1:php常用面试题及答案

1、谈对mvc的认识?

答:由模型(Model),视图(View),控制器(Controller)完成的应用程序

由模型发出要实现的功能到控制器,控制器接收组织功能传递给视图;

2、写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)

答:SELECT * FROM `members` ORDER BY posts DESC limit 0,10;

3、GD库是做什么用的?

答:gd库提供了一系列用来处理图片的功能,使用GD库可以处理图片,或者生成图片。

在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。

4、请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么别?

答:int是数字类型,char固定长度字符串,varchar实际长度字符串,datetime日期时间型,text文本字符串

char的场地固定为创建表设置的长度,varchar为可变长度的字符

5、以下程序的输出结果?

$b=201;

$c=40;

$a=$b>$c?4:5;

echo $a;

?>

答:4

6、检测一个变量是否有设置的函数是?是否为空的函数是?

答:isset($str),empty($str);

7、得查询结果集总数的函数是?

答:mysql_num_rows($result);

8、$arr = array(‘james’, ‘tom’, ‘symfony’); 请打印出第一个元素的值?

答:echo $arr[0];

9、===”是什么?试举一个“==”是真但“===”是假的例子。

“===”是既可以返回布尔值“假”,也可以返回一个不是布尔值但却可以赋与“假”值的函式,strpos 和 strrpos() 便是其中两个例子。

if (strpos(“abc”, “a”) == true){ // 这部分永不会被执行,因为 “a” 的位置是 0,换算成布尔值“假”}if (strpos(“abc”, “a”) === true){ // 这部份会被执行,因为“===”保证函式 strpos() 的送回值不会换算成布尔值.}

10、以下程序的输出结果

$str=“cd”;

$$str=“hotdog”;

$$str.=“ok”;

echo $cd;

?>

答案:hotdogok

11、给你三个数,写程序求出其最大值。

$var1=1;

$var2=7;

$var3=8;

$max=$var1>$var2?$var1:$var2;

$max=$max>$var3?$max:$var3;

echo $max;

12、将一个选择2号选项的ip为127.0.0.1的用户在当前时间的投票记录到数据库的SQL

答:insert into poll (ip,time,iid) values('127.0.0.1',now(),2);

13、个函数验证电子邮件的格式是否正确 ?

答:function checkEmail($email)

{

$pregEmail = “/([a-z0-9]*[-_\\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\\.][a-z]{2,3}([\\.][a-z]{2})?/i”;

return preg_match($pregEmail,$email);

}

14、表 menu(mainmenu,submenu,url),请用递归法写出一树形菜单,将所有的menu列出来

function GenerateMenu($id=0,$str=“”)

{

$result=mysql_query(“select mainmenu,url,submenu from menu where mainmenu=$id”);

while($row=mysql_fetch_array($result))

{

echo $str.$row[“url”].“

”;

GenerateMenu($row[“submenu”],$str.“--”);

}

mysql_free_result($result);

}

$link=mysql_connect(“localhost”,“root”,“”);

mysql_select_db(“phpinterview”);

GenerateMenu();

mysql_close($link)

?>

15、PHP可以和sql server/oracle等数据库连接吗?

答:可以

16、写出PHP5权限控制修饰符?

答:public(公共),private(私用),protected(继承)

17、请写出php5的构造函数和析构函数?

答: 构造函数:官方称自定义函数

析构函数:垃圾回收函数(__destruct)

18、表单中 get与post提交方法的区别?

答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息.

19、session与cookie的区别?

答:session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放

cookie:用来存储连续L一个面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。

两者都可通过时间来设置时间长短

20、用PHP打印出前一天的时间格式是2010-7-3 12:28:21?

答:echo date(‘Y-m-d H:i:s’, strtotime(‘-1 days’));

21、e2ho(),print(),print_r()的区别?

答:echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)

print() 只能打印出简单类型变量的值(如int,string)

print_r() 可以打印出复杂类型变量的值(如数组,对象)

echo 输出一个或者多个字符串

22、能够使HTML和PHP分离开使用的模板?

答:Smarty, TinyButStrong,XTemplate, Savant,Template Lite, Dwoo, phemplate

23、哪些工具进行版本控制?

答:cvs,svn,vss;

24、如何实现字符串翻转?

答:echo strrev($a); //strrev ― 颠倒字符串

25、优化查询语句?

a.最好在相同字段进行比较操作,在建立好的索引字段上尽量减少函数操作

例子1:

SELECT * FROM order WHERE YEAR(orderDate)<2008;(慢)

SELECT * FROM order WHERE orderDate<“2008-01-01”;(快)

例子2:

SELECT * FROM order WHERE addtime/7<24;(慢)

SELECT * FROM order WHERE addtime<24*7;(快)

例子3:

SELECT * FROM order WHERE title like “%good%”;

SELECT * FROM order WHERE title>=”good” and name<“good”;

26、对于大流量的网站,您采用什么样的方法来解决访问量问题?

答:确认服务器硬件是否足够支持当前的流量,数据库读写分离,优化数据表,

程序功能规则,禁止外部的盗链,控制大文件的下载,使用不同主机分流主要流量

27、如何修改SESSION的生存时间?.

答:方法1:将php.ini中的session.gc_maxlifetime设置为9999重启apache

方法2:$savePath = “./session_save_dir/”;

$lifeTime = 小时 * 秒;

session_save_path($savePath);

session_set_cookie_params($lifeTime);

session_start();

方法3:setcookie() and session_set_cookie_params($lifeTime);

28、有一个网页地址, 比如PHP开发资源网主页: www.php100.com/,如何得到它的内容?

答:方法1(对于PHP5及更高版本):

$readcontents = fopen(“www.php100.com/”, “rb”);

$contents = stream_get_contents($readcontents);// stream_get_contents 取得字符串赋值给$contents

fclose($readcontents);

echo $contents;

方法2:

echo file_get_contents(“www.php100.com/”);

// file_get_contents() 函数把整个文件读入一个字符串中。

29、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为?

答:状态401代表未被授权,header(“Location:www.xxx.php”);

30、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?

答:heredoc的语法是用”<<<“加上自己定义成对的标签,在标签范围鹊奈淖质游一个字串

例子:

$str = <<

my name is Jiang Qihui!

SHOW;

31、foo()和@foo()之间有什么区别?

答:@foo()控制错误输出

32、如何声明一个名为”myclass”的没有方法和属性的类?

答:class myclass{ }

33、如何实例化一个名为”myclass”的对象?

答:new myclass()

34、你如何访问和设置一个类的属性?

答:$object = new myclass();

$newstr = $object->test;

$object->test = “info”;

35、mysql_fetch_row() 和mysql_fetch_array之间有什么区别?

答:mysql_fetch_row是从结果集取出1行数组,作为枚举

mysql_fetch_array是从结果集取出一行数组作为关联数组,或数字数组,两者兼得

36、下面哪个函数可以打开一个文件,以对文件进行读和写操作?

(a) fget() (b) file_open() (c) fopen() (d) open_file()

答:c

37、下面的程序会输入是否?

$num = 10;

function multiply(){

$num = $num * 10;

}

multiply();

echo $num;

?>

否,局部变量

38、JS表单弹出对话框函数是?获得输入焦点函数是?

答:弹出对话框: alert(),prompt(),confirm()

获得输入焦点 focus()

39、JS的转向函数是?怎么引入一个外部JS文件?

答:window.location.href;

40、$a = ‘abcdef’; 请取出$a的值并打印出第一个字母?

答:echo $a{0} 或 echo substr($a,0,1)

41、如何使用下面的类,并解释下面什么意思?

class test{

function Get_test($num){

$num=md5(md5($num).”En”);

return $num;

} }

双重md5加密

$testObject = new test();

$encryption = $testObject->Get_test(“xiaotian_ls”);

42、请举例说明在你的开发过程中用什么方法来加快页面的加载速

答:要用到服务器资源时才打开,及时关闭服务器资源,数据库添加索引,页面可生成静态,图片等大文件单独服务器。使用代码优化工具啦

43、写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉):

$script=”以下内容不显示:alert(‘cc’);“;

echo preg_replace(”/].*?>.*?/si“, ”替换内容“, $script);

?>

44、以Apache模块的方式安装PHP,在文件http.conf中首先要用语句____动态装载PHP模块,然后再用语句____使得Apache把所有扩展名为php的文件都作为PHP脚本处理。

答:LoadModule

php5_module

”c:/php/php5apache2.dll“;AddType application/x-httpd-php .php

45、sort()、asort()、和 ksort() 有什么分别?它们分别在什么情况下使用?

sort()

根据阵列中元素的值,以英文字母顺序排序,索引键会由 0 到 n-1 重新编号。主要是当阵列索引键的值无关疼痒时用来把阵列排序。

asort()

与 sort() 一样把阵列的元素按英文字母顺序来排列,不同的是所有索引键都获得保留,特别适合替联想阵列排序。

ksort()

根据阵列中索引键的值,以英文字母顺序排序,特别适合用于希望把索引键排序的联想阵列。

46、用PHP写出显示客户端IP与服务器IP的代码?

答:打印客户端IP:echo $_SERVER[‘REMOTE_ADDR’]; 或者: getenv('REMOTE_ADDR');//getenv取得开发环境变量

打印服务器IP:echo gethostbyname(”www.bolaiwu.com“) // gethostbyname取得IP地址函数

47、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们?

答:require->require是无条件包含也就是如果一个流程里加入require,无论条件成立与否都会先执行require

include->include有返回值,而require没有(可能因为如此require的速度比include快)

注意:包含文件不存在或者语法错误的时候require是致命的,include不是

48、PHP的意思?

答:PHP是一个基于服务端来创建动态网站的脚本语言,您可以用PHP和HTML生成网站主页

49、谈谈asp,php,jsp的优缺点?

答:ASP全名Active Server Pages,是一个WEB服务器端的开发环境, 利用它可以产生和运行动态的、交互的、高性能的WEB服务应用程序。ASP采用脚本语言VB Script(Java script)作为自己的开发语言。

PHP是一种跨平台的服务器端的嵌入式脚本语言. 它大量地借用C,Java和Perl语言的语法, 并耦合PHP自己的特性,使WEB开发者能够快速地写出动态生成页面.它支持目前绝大多数数据库。还有一点,PHP是完全免费的,不用花钱,你可以从PHP官方站点(www.php.net)自由下载。而且你可以不受限制地获得源码,甚至可以从中加进你自己需要的特色。

JSP 是Sun公司推出的新一代站点开发语言,他完全解决了目前ASP,PHP的一个通病--脚本级执行(据说PHP4 也已经在Zend 的支持下,实现编译运行).Sun 公司借助自己在Java 上的不凡造诣,将Java 从Java 应用程序 和 Java Applet 之外,又有新的硕果,就是Jsp--Java Server Page。Jsp 可以在Serverlet和JavaBean的支持下,完成功能强大的站点程序。

三者都提供在 HTML 代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。但JSP代码被编译成 Servlet 并由 Java 虚拟机解释执行,这种编译操作仅在对 JSP 页面的第一次请求时发生。在 ASP 、PHP、JSP 环境下,HTML 代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的 HTML 页面只依赖于 Web 服务器,而 ASP 、PHP、JSP 页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到 HTML 代码中,然后一起发送给浏览器。 ASP 、PHP、JSP三者都是面向 Web 服务器的技术,客户端浏览器不需要任何附加的软件支持。

50、   优化MYSQL数据库的方法

(1).选取最适用的字段属性,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。

(2).使用连接(JOIN)来代替子查询(Sub-Queries)

(3).尽量少使用 LIKE 关键字和通配符

篇2:关于精选php面试题及答案

精选php面试题及答案

一、基础题

1. 写出如下程序的输出结果

<?php $str1 = null;

$str2 = false;

echo $str1==$str2 ? 相等 : 不相等;

$str3 = ;

$str4 = 0;

echo $str3==$str4 ? 相等 : 不相等;

$str5 = 0;

$str6 = 0;

echo $str5===$str6 ? 相等 : 不相等;?>

2. 写出如下程序的输出结果

<?php $a1 = null;

$a2 = false;

$a3 = 0;

$a4 = ;

$a5 = 0;

$a6 = null;

$a7 = array();

$a8 = array(array());

echo empty($a1) ? true : false;

echo empty($a2) ? true : false;

echo empty($a3) ? true : false;

echo empty($a4) ? true : false;

echo empty($a5) ? true : false;

echo empty($a6) ? true : false;

echo empty($a7) ? true : false;

echo empty($a8) ? true : false;?>

3. 写出如下程序的输出结果

<?php $test = aaaaaa;

$abc = & $test;

unset($test);

echo $abc;?>

4. 写出如下程序的输出结果

<?php $count = 5;

function get_count(){

static $count = 0;

return $count++;

}

echo $count;

++$count;

echo get_count();

echo get_count();?>

5. 写出如下程序的输出结果

<?php $GLOBALS[var1] = 5;

$var2 = 1;

function get_value(){

global $var2;

$var1 = 0;

return $var2++;

}

get_value();

echo $var1;

echo $var2;?>

6. 写出如下程序的输出结果

<?php function get_arr($arr){

unset($arr[0]);

}

$arr1 = array(1, 2);

$arr2 = array(1, 2);

get_arr(&$arr1);

get_arr($arr2);

echo count($arr1);

echo count($arr2);?>

7. 使用五种以上方式获取一个文件的扩展名

要求:dir/upload.image.jpg,找出 .jpg 或者 jpg ,

必须使用PHP自带的处理函数进行处理,方法不能明显重复,可以封装成函数,比如 get_ext1($file_name), get_ext2($file_name)

二、算法题

1. 使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组

2. 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组

3. 写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数【答案】

(以下答案不一定是最好的,只是一个简单的参考)

1.常用php面试题及答案

2.php常用面试题及答案

3.PHP面试题汇总

4.优秀php高级工程师面试题及答案

5.2015百度PHP面试题

6.百度php面试题目

7.腾讯php面试题

8.提问得最多的PHP面试题

9.2017基础php面试题

10.百度php面试题

篇3:常用php面试题及答案

1.简述两种屏蔽php程序的notice警告的方法

初始化变量,文件开始设置错误级别或者修改php.ini 设置error_reporting

set_error_handler 和 @抑制错误

1.在程序中添加:error_reporting (E_ALL & ~E_NOTICE);

2.或者修改php.ini中的:error_reporting = E_ALL

改为:error_reporting = E_ALL & ~E_NOTICE

3.error_reporting(0);或者修改php.inidisplay_errors=Off

2.instanceof的作用, 经常在什么设计模式中使用

单例模式,但是其他的模式也会用到

3.1023用二进制表示, 并简述计算过程

10-2

1023%2=1

511%2 =1

255%2 =1

127%2 =1

63%2 =1

31%2 =1

15%2 =1

7%2 =1

3%2 =1

1%2 =1

0 =0

-------------------------------------------

1023

2^9=

511

k=9

10 9 8 7 6 5 4 3 2 1

1 1 1 1 1 1 1 1 1 1

----------------------

1023 1

1023-1/2=511 1

511-1/2=255 1

255-1/2=127 1

127-1/2=63 1

63-1/2=31 1

31-1/2=15 1

15-1/2=7 1

7-1/2=3 1

3-1/2=1 1

-----------------------------------------------

2-10

只需用将二进制数的各个位上的数从最右边开始,最右边的第一个数乘以二的零次方,第二个数乘以二的一次方,第三个数乘以二的二次方,依次类推可得第n个数乘以二的(n-1)次方,然后把得到的结果相加即可

例如:110011=1*2^0+1*2^1+0*2^2+0*2^3+1*2^4+1*2^5=51

这也可以算是一个公式就是An*2^(n-1) An表示二进制数最右边开始的第n个数,

将第一项第二项第三项一直到第n项用式子An*2^(n-1) 计算出来并加在一起即可

4.有如下数据库, 用原生态mysql扩展去连接并查询user表的前十行

host: 192.168.0.254

port: 3306

user: one

pass: piece

database: db_user

table: user

$link = mysql_connect(”192.168.0.254:3306“,”one“,”piece“) or die('Could not connect: '.mysql_error);

mysql_select_db('db_user',$link);

$query = mysql_query(”select * from user limit 10“);

while($rs = mysql_fetch_array($query,MYSQL_ASSOC))

5.符串”\\r”,”\\n”,”\\t”,”\\x20”分别代表什么?

答案: “\\r”代表的含义是:

在Linux、unix 中表示返回到当行的最开始位置,在Mac OS 中表示换行且返回到下一行的最开始位置,相当于Windows 里的 \\n 的效果。

“\\n”代表的含义是:

在Windows 中表示换行且回到下一行的最开始位置。相当于Mac OS 里的 \\r 的效果,在linux、unix 中只表示换行,但不会回到下一行的开始位置。

“\\t”所代表的含义是:

键盘上的“TAB”键,跳格(移至下一列)。

“\\x20”所代表的含义是:是32在ASCII表中16进制的表示。

6.语句输出的结果是什么?

$a = 3;

echo ”$a“,'$a',”\\\\\\$a“,”${a}“,”$a“.”$a“,”$a“+”$a“;

1

2

1

2

得到的

篇4:PHP面试题及答案

1.以下哪一句不会把 John 新增到 users 阵列?

$users[] = 'john';

成功把 John 新增到阵列 users。

array_add($users,’john’);

函式 array_add() 无定义。

array_push($users,‘john’);

成功把 John 新增到阵列 users。

$users ||= 'john';

语法错误。

2.sort()、assort()、和 ksort() 有什么分别?它们分别在什么情况下使用?

sort()

根据阵列中元素的值,以英文字母顺序排序,索引键会由 0 到 n-1 重新编号。主要是当阵列索引键的值无关疼痒时用来把阵列排序。

assort()

PHP 没有 assort() 函式,所以可能是 asort() 的笔误。

asort()

与 sort() 一样把阵列的元素按英文字母顺序来排列,不同的是所有索引键都获得保留,特别适合替联想阵列排序。

ksort()

根据阵列中索引键的值,以英文字母顺序排序,特别适合用于希望把索引键排序的联想阵列。

3.以下的代码会产生什么?为什么?

$num =10;

function multiply(){

$num =$num *10;

}

multiply();

echo $num;

由于函式 multiply() 没有指定 $num 为全域变量(例如 global $num 或者 $_GLOBALS['num']),所以 $num 的值是 10。

4. reference 跟一个正规的变量有什么分别?如何 pass by reference?在什么情况下我们需要这样做?

Reference 传送的是变量的地址而非它的值,所以在函式中改变一个变量的值时,整个应用都见到这个变量的新值。

一个正规变量传送给函式的是它的值,当函式改变这个变量的值时,只有这个函式才见到新值,应用的其他部分仍然见到旧值。

$myVariable = ”its' value“;Myfunction(&$myVariable); // 以 reference 传送参数以 reference 传送参数给函式,可以使函式改变了的变量,即使在函式结束后仍然保留新值。

5.些函式可以用来在现正执行的脚本中插入函式库?

对这道题目不同的理解会有不同的答案,我的第一个想法是插入 PHP 函式库不外乎 include()、include_once()、require()、require_once(),但细心再想,“函式库”也应该包括 com 物件和 .net 函式库,所以我们的答案也要分别包括 com_load 和 dotnet_load,下次有人提起“函式库”的时候,别忘记这两个函式。

6.foo() 与 @foo() 有什么分别?

foo() 会执行这个函式,任何解译错误、语法错误、执行错误都会在页面上显示出来。

@foo() 在执行这个函式时,会隐藏所有上述的错误讯息。

很多应用程式都使用 @mysql_connect() 和 @mysql_query 来隐藏 mysql 的错误讯息,我认为这是很严重的失误,因为错误不该被隐藏,你必须妥善处理它们,可能的话解决它们。

7.你如何替 PHP 的`应用程式侦错?

我并不常这样做,我曾经试过很多不同的侦错工具,在 Linux 系统中设定这些工具一点也不容易。不过以下我会介绍一个近来颇受注目的侦错工具。

PHP - Advanced PHP Debugger 或称 PHP - APD,第一步是执行以下的指令安装:

pear install apd安装后在你的脚本的开头位置加入以下的语句开始进行侦错:

apd_set_pprof_trace();执行完毕,打开以下档案来查阅执行日志:

apd.dumpdir

你也可以使用 pprofp 来格式化日志。

详细的资料可以参阅 us.php.net/manual/en/ref.apd.php。

8.“===”是什么?试举一个“==”是真但“===”是假的例子。

“===”是给既可以送回布尔值“假”,也可以送回一个不是布尔值但却可以赋与“假”值的函式,strpos() 和 strrpos() 便是其中两个例子。

问题的第二部份有点困难,想一个“==”是假,但是“===”是真的例子却很容易,相反的例子却很少。但我终于找到以下的例子:

if (strpos(”abc“, ”a“) == true){    // 这部分永不会被执行,因为 ”a“ 的位置是 0,换算成布尔值“假”}if (strpos(”abc“, ”a“) === true){    // 这部份会被执行,因为“===”保证函式 strpos() 的送回值不会换算成布尔值.}

9.你会如何定义一个没有成员函式或特性的类别 myclass?

class myclass{}

10.你如何产生一个 myclass 的物件?

$obj = new myclass();

11.在一个类别内如何存取这个类别的特性及变改它的值?

使用语句:$this->propertyName,例如:

class myclass{ private $propertyName; public function __construct() {   $this->propertyName = ”value“; }}

12.include 和 include_once 有什么分别?require 又如何?

三者都是用来在脚本中插入其他档案,视乎 url_allow_fopen 是否核准,这个档案可以从系统内部或外部取得。但他们之间也有微细的分别:

include():这个函式容许你在脚本中把同一个档案插入多次,若果档案不存在,它会发出系统警告并继续执行脚本。

include_once():它跟 include() 的功能相似,正如它的名字所示,在脚本的执行期间,有关档案只会 入一次。

require():跟 include() 差不多,它也是用来在脚本中插入其他档案,但若果档案不存在,它会发出系统警告,这个警告会引致致命错误令脚本中止执行

13.以下哪一个函式可以把浏览器转向到另一个页面?

redir()

这不是一个 PHP 函式,会引致执行错误。

header()

这个是正确答案,header() 用来插入卷头资料,可以用来使浏览器转向到另一个页面,例如:

header(”Location: www.search-this.com/“);

location()

这不是一个 PHP 函式,会引致执行错误。

redirect()

这不是一个 PHP 函式,会引致执行错误。

14.以下哪一个函式可以用来开启档案以便读/写?

fget()

这不是一个 PHP 函式,会引致执行错误,

file_open()

这不是一个 PHP 函式,会引致执行错误。

fopen()

这是正确答案,fopen() 可以用来开启档案以便读/写,事实上这个函式还有很多选项,详细资料请参阅 php.net。

open_file()

这不是一个 PHP 函式,会引致执行错误。

15.mysql_fetch_row() 和 mysql_fetch_array() 有什么分别?

mysql_fetch_row() 把数据库的一列储存在一个以零为基数的阵列中,第一栏在阵列的索引 0,第二栏在索引 1,如此类推。mysql_fetch_assoc() 把数据库的一列储存在一个关联阵列中,阵列的索引就是栏位名称,例如我的数据库查询送回“first_name”、“last_name”、“email”三个栏位,阵列的索引便是“first_name”、“last_name”和“email”。mysql_fetch_array() 可以同时送回 mysql_fetch_row() 和 mysql_fetch_assoc() 的值。

16.下面的代码用来做什么?请解释。

$date='08/26/2003';print ereg_replace(”([0-9]+)/([0-9]+)/([0-9]+)“,”\\\\2/\\\\1/\\\\3“,$date);

这是把一个日期从 MM/DD/YYYY 的格式转为 DD/MM/YYYY 格式。我的一个好朋友告诉我可以把这个正规表达式拆解为以下的语句,对于如此简单的表示是来说其实无须拆解,纯粹为了解说的方便:

// 对应一个或更多 0-9,后面紧随一个斜号$regExpression = ”([0-9]+)/“;// 应一个或更多 0-9,后面紧随另一个斜号$regExpression .= ”([0-9]+)/“;// 再次对应一个或更多 0-9$regExpression .= ”([0-9]+)“;至于 \\\\2/\\\\1/\\\\3 则是用来对应括号,第一个括号对的是月份,第二个括号对应的是日期,第三个括号对应的是年份。

17.给你一行文字 $string,你会如何编写一个正规表达式,把 $string 内的 HTML 标签除去?

首先,PHP 有内建函式 strip_tags() 除去 HTML 标签,为何要自行编写正规表达式?好了,便当作是面试的一道考题吧,我会这样回答:

$stringOfText = ”

This is a test

“;$expression = ”/<(.*?)>(.*?)<\\/(.*?)>/“;echo preg_replace($expression, ”\\\\2“, $stringOfText);// 有人说也可以使用 /(<[^>]*>)/ $expression = ”/(<[^>]*>)/“;echo preg_replace($expression, ”“, $stringOfText);

18.PHP 和 Perl 分辨阵列和散列表的方法有什么差异?

这正是为何我老是告诉别人选择适当的编程语言,若果你只用一种语言的话你怎么能回答这道问题?这道问题很简单,Perl 所有阵列变量都是以 @ 开头,例如 @myArray,PHP 则沿用 $ 作为所有变量的开头,例如 $myArray。

至于 Perl 表示散列表则用 %,例如 %myHash,PHP 则没有分别,仍是使用 $,例如 $myHash。

19.你如何利用 PHP 解决 HTTP 的无状态本质?

最主要的俩各选择是 session 和 cookie。使用 session 的方法是在每一页的开始加上 session_start(),然后利用 $_SESSION 散列表来储存 session 变量。至于 cookie 你只需记着一个原则:在输出任何文字之前调用 set_cookie() 函式,此外只需使用 $_COOKIE 散列表便可以存取所有 cookie 变量。

还有一个不那么可靠的方法,就是利用访客的 IP 地址,这个方法有特定的危险性。

20.GD 函式库用来做什么?

这个可能是我最喜欢的函式库,自从 PHP 4.3.0 版本后 GD 便内建在 PHP 系统中。这个函式库让你处理和显示各式格式的图档,它的另一个常见用途是制作所图档。GD 以外的另一个选择是 ImageMagick,但这个函式库并不内建于 PHP 之中,必须由系统管理员安装在伺服器上。

21.试写出几个输出一段 HTML 代码的方法。

嗯,你可以使用 PHP 中任何一种输出语句,包括 echo、print、printf,大部分人都使用如下例的 echo:

echo ”My string $variable“;你也可以使用这种方法:

echo <<

22.PHP 比 Perl 好吗?请讨论。

我们不要为一个简单的问题引发一场舌战,正如我经常说的:“为工作选择适合的语言,不要把工作迁就语言。”我个人认为 Perl 十分适合用作命令行工具,虽然它在网页应用上也有不错的表现,但是它的真正实力在命令行上才能充分发挥。同样地,PHP 虽然可以在控制台的环境中使用,但是个人认为它在网页应用上有更好的表现,PHP 有大量专门为网页应用而设计的函式,Perl 则似乎以命令行为设计之本。

个人来说两种语言我都喜欢,在大学期间我经常使用 Perl、PHP 和 Java,可惜工作上我使用 C#,但在家里我花不少时间操练 PHP、Perl、Ruby(现正学习)和 Java,保持我的技能知识在最新状态。很多人问我 C 和 C++ 怎么样,它们是否仍有机会在我的应用中占一席位,我的答案基本上是“否”,我近来的工作主要集中在网页开发,虽然 C 和 C++ 也可以用来写网页,但它们到底不是为这种工作而设计的,“为工作选择适合的语言”,若果我需要编写一个控制台应用,用来展示 bubble sort、quick sort 和 merge sort 的效能比较,我一定会使用 C / C++。若果我需要编写一个相片簿系统,我会使用 PHP 或者 C#(我认为制作用户介面方面 .NET 语言比网页更加)。

更多相关的面试问题文章推荐,大家敬请继续阅读:微软常见面试问题  国企面试常见问题及答案   外资银行面试问题集锦

篇5:PHP面试题附答案

PHP面试题附答案

1. Which of the following will not add john to the users array?

1. $users[] = ‘john’;

2. array_add($users,’john’);

3. array_push($users,’john’);

4. $users ||= ‘john’;

Answer: 2,4

2. What’s the difference between sort, asort() and ksort(),rsort()? Under what circumstances would you use each of these?

sort(): 本函数对数组的值进行排序,当本函数结束时数组单元将被从最低到最高重新安排,array 中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序。

asort(): 这个函数将数组的值重新排序,由小至大排列。数组的索引亦跟着值的 顺序而变动。当您在程序中需要重新整理数组值的 顺序时,就可以使用这个函数。

ksort(): 对数组按照键名排序,保留键名到数据的关联。本函数主要用于关联数组。

rsort(): 本函数对数组进行逆向排序(最高到最低)。与sort()执行相反的操作。

3. What would the following code print to the browser? Why?

$num = 10;

function multiply(){

$num = $num * 10;

}

multiply();

echo $num;

10

4. What is the difference between a reference and a regular variable? How do you pass by reference & why would you want to?

pass by reference like this functions(&$vars);

it likes more fast;

5. What functions can you use to add library code to the currently running script?

inlcude() or require();

6. What is the difference between foo() & @foo()?

if foo() throw a error, will be alert, but @foo() no;

7. How do you debug a PHP application?

xdebug or use die() do it;

8. What does === do? What’s an example of something that will give true for ‘==’, but not ‘===’?

=== 用于精确比较 ex: (” == null) =>true but ( ”===null) =>false;

9. How would you declare a class named “myclass” with no methods or properties?

class myclass{

}

10. How would you create an object, which is an instance of “myclass”?

$myoject = new myclass();

11. How do you access and set properties of a class from within the class?

getVar() or setVar() ;

12. What is the difference between include & include_once? include & require?

require:PHP 程式在执行前,就会先读入 require 所指定引入的档案,使它变成 PHP 程式网页的.一部份,

常用的函式,亦可以这个方法将它引入网页中。错误产生致命错误。

include:这个函式一般是放在流程控制的处理区段中。PHP 程式网页在读到 include 的档案时,才将它读进来。这种方式,可以把程式执行时的流程简单化。错误产生警报。

include_once:此行为和include()语句类似,唯一区别是如果该文件中的代码已经被包含了,则不会再次包含。如同此语句名字暗示的那样,只会包含一次。

13. What function would you use to redirect the browser to a new page?

1. redir()

篇6:PHP面试题与答案

1. 禁用COOKIE 后 SEESION 还能用吗?

2. 抓取远程图片到本地,你会用什么函数?

4. 你觉得在pV10W的时候, 同等配置下,LUNIX 比WIN快多少?

5. 简述pOST 和GET传输的最大容量分别是多少?

6. 用最少的代码写一个求3值最大值的函数.

以下是部分答案(不保证是正确的解)

1. 不能

2 fsockopen

4 (不做优化的情况下一样)

5 2MB,1024B

6 function($a,$b,$c){

return $a>$b? ($a>$c? $a : $c) : ($b>$c? $b : $c );

}

―――――――――――――――――――――――――――C

大公司的pHp面试题

2. 求两个日期的差数,例如2007-2-5 ~ 2007-3-6 的日期差数

$begin=strtotime(‘2007-2-5′);

$end=strtotime(‘2007-3-6′);

echo ($end-$begin)/(24*3600);

3. 请写一个函数,实现以下功能:

字符串“open_door” 转换成 “OpenDoor”、”make_by_id” 转换成 ”MakeById”。

function str_change($str) {

$str = str_replace ( “_”, ” “, $str );

$str = ucwords ( $str );

$str = str_replace ( ” “, “”, $str );

return $str; }

4. 要求写一段程序,实现以下数组$arr1转换成数组$arr2:

$arr1 = array (

‘0′ =>array (‘fid’ =>1, ‘tid’ =>1, ‘name’ =>’Name1′ ),

‘1′ =>array (‘fid’ =>1, ‘tid’ =>2 , ‘name’ =>’Name2′ ),

‘2′ =>array (‘fid’ =>1, ‘tid’ =>5 , ‘name’ =>’Name3′ ),

‘3′ =>array (‘fid’ =>1, ‘tid’ =>7 , ‘name’ =>’Name4′ ),

‘4′ =>array (‘fid’ =>3, ‘tid’ =>9, ‘name’ =>’Name5′ )

);

$arr2 = array (

‘0′ =>array (

‘0′ =>array ( ‘tid’ =>1, ‘name’ =>‘Name1′),

‘1′ =>array ( ‘tid’ =>2, ‘name’ =>‘Name2′),

‘2′ =>array ( ‘tid’ =>5, ‘name’ =>‘Name3′),

篇7:php工程师面试题及答案

php工程师面试题及答案

【1 】Memcached、redis的使用和理解

Memcached和redis 都是一个key-value的内存式存储系统,通过hash表来存储检索结果,做到强大的缓存机制。像新浪的微博、淘宝等大流量站点都必须的使用了这些东东。

Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。

【2】你对于设计模式和MVC的理解

Model-View-Controller,模型、视图、控制器,一想到MVC就会想到JAVA,因为JAVA是一个完全面向对象的语言,MVC最早出现在smalltalk中,其核心就是要将试图和数据模型分离,这样不同的程序就可以有不同的展示。

模型,即程序员写的功能、算法和数据模型,也就是我们说的系统业务逻辑层。

视图,即前端,图形界面。展示给用户看的。

控制器,主要负责对请求处理、转发和加载视图。

设计模式,说白了就是代码的设计经验的总结和归类,设计模式最早应用于建筑行业,编程的设计模式按最早的GoF所述,包括23种设计模式,主要用于面向对象的程序编程。遵循几个设计原则:开闭原则、单一职责原则、里氏替换原则、依赖注入、接口分离、迪米特原则、优先使用组合而不是继承等等。包括创建型模式、结构性模式、行为模式三类。

【3】HTTP协议1.0及1.1的区别,并简单说下HTTP协议

HTTP,超文本传输协议。它定义了浏览器和服务器的通信规则。HTTP协议是基于TCP/IP的TCP协议上,现在万维网使用的是HTTP1.1版本,其特点包括,C/S模式,请求简单(GET/POST/HEAD),灵活(可以传输任何类型的数据HTML、XML、JSON、自定义等),无连接(每次连接只处理一个请求,从发出请求到收到200状态为止断开连接),无状态。

对HTTP协议的考察主要包括,响应消息格式、请求消息格式、状态码等知识点。

一般一个HTTP协议包括:起始行(start line)、首部(header)、主体(body)三个部分。

[响应消息格式]

HTTP/1.1 200 0K

Connectlon:close

Date: Thu, 13 Oct 2005 03:17:33 GMT

Server: Apache/2.0.54 (Unix)

Last—Nodified:Mon,22 Jun 1998 09;23;24 GMT

Content—Length:682l

Content—Type:text/html

这个响应消息分为3部分:1个起始的状态行(status line),首部、1个包含所请求对象本身的附属体。状态行有3个字段:协议版本字段、状态码字段、原因短语字段。

[请求消息格式]

GET /somedir/page.html HTTP/1.1

Host:www.chinaitlab.com

Connection:close

User-agent:Mozilla/4.0

Accept-language:zh-cn

(额外的回车符和换行符)

该请求消息的第一行称为请求行 (request line),后续各行都称为头部行(header)。请求行有3个字段:方法字段、URL字段、HTTP版本字段。

[状态码]参见www.cnblogs.com/TankXiao/archive/2013/01/08/2818542.html

1xx 消息

2xx 成功

3xx 重定向

4xx 请求错误

5xx 服务器错误

[常见状态码]

200 OK。请求已成功,请求所希望的响应头或数据体将随此响应返回。

300 Multiple Choices。请求资源有多个选择,如请求文本有法语版、英语版等等。

301 Moved Permanently。表示请求的网页已永久转移到新位置

302 Found。表示页面在做临时跳转时返回的状态。

304 Not Modified。客户的缓存资源是最新的, 要客户端使用缓存。

400 Bad Request。错误的请求。

403 Forbidden。请求被服务器拒绝了。

404 Not Found。表示服务器找不到请求的网页,服务器上不存在的网页经常会返回的HTTP状态码。

500 Internal Server Error。

503 Service Unavailable。服务器目前无法为请求提供服务,但过一段时间就可以恢复服务。

504 Gateway Timeout。与状态吗408类似, 但是响应来自网关或代理,此网关或代理在等待另一台服务器的响应时出现了超时。

505 HTTP Version not supported。 HTTP协议版本不支持。

【4】简单说下Apache中rewrite机制和PHP框架中URI路由机制

1)URL重写,其实就是把用户通过浏览器请求的URL,到了后台,apache根据预先配置的重写规则将该请求指向真正的资源路径,说白了就是打马虎眼,把真正的路径改头换面后给用户访问,可问题是这样做有啥用处呢。

1、SEO方面。将动态的URL静态化,以满足搜索引擎的胃口。

2、访问控制。比如,通过重写规则后,客户端不易判断后台程序类型等。

3、URL重定向。当网站更改域名或增加别名URL后,可以通过规则轻松的指向要访问的'URL。

httpd.apache.org/docs/current/mod/mod_rewrite.html

mod_rewrite 使用基于正则表达式动态的修改传入请求的URL。它可以将URL映射到文件系统路径,也可以将一个URL映射到另一个URL。它使用了没有限制数量的规则来操纵URL,每条规则可以包括没有限制数量的附加条件。你可以通过多种方式来检测,如,服务器变量、环境变量、HTTP头、时间戳等。

mod_rewrite 操作整个URL路径,包括path-info的部分。一个重写规则可以被设置在http.conf或者.htaccess中。一个重写规则生成的路径可以包括一个请求字符串,或者内部的子程序处理,外部请求的重定向,或者穿透内部代理等。

2)PHP框架中的URI路由机制,与apache重写类似,一般包括通配符和正则两种规则。让用户可以重新定向(remap)URI处理程序. 设定你自己的路由规则。

【5】MySQL的索引机制,复合索引的使用原则

(深入浅出MySQL一书中对索引的使用讲的比较细致)

一般都会用书本中的目录来介绍索引机制,包括有些书本会有专门的快速检索附录,就很类似于数据库的索引。

MySQL的索引包括4类:主键索引(primary key)、唯一索引(unique)、常规索引(index)、全文索引(fullindex)。

Show index from table_name; –查看表中的索引

Show status like ‘Handler_read%’ –查看索引的使用情况

复合索引,一般遵循最左前缀原则,如table_a 的 a b c 三列建复合索引

create index ind_table_a on table_a(a,b,c);

那么,只有在条件中用到a,或者a、b,或者a、b、c这样的情况下,才会用到刚建的复合索引。

【6】如何理解OOP

OOP,面向对象编程,包括三个方面,继承性、封装性、多态性,其中最根本的东西就是抽象。

继承性,即扩展性,通过子类对已经存在的父类进行功能扩展。

封装性,要求外部不能随意存取对象的内部数据,即对该类中的具体实现做封装,用户不必知道内部的具体实现,只有知道它是干什么的,怎么用就好了。

多态性,就是类的抽象和接口,同一个类能够处理多种类型对象的能力。

我们在现实中,看到的任何东东都可以看做为一个对象,然后通过进一步的抽象为类,类又可以演变为很多类似的对象。举个简单的例子,将我们看到的一个房子抽象为一个ROOM类,包括基本的门,窗,桌子等物件,人可以进出等功能。 现在我们继承ROOM类为Classroom,包括扇门,有大窗,有桌椅,另外只包括一个黑白和一个讲台,老师和同学可以上课。现在我们实例化这个Classroom类为Classroom_621对象,包括两扇门,四扇大窗,30套桌椅,有同学正在上毛概课。

篇8:PHP面试题

这是一份比较全面的PHP面试题.对准备去新公司应聘PHP职位的开发者应该有帮助.

或者说,对招聘PHP开发人员的企业也有些帮助,不过就不要原样打印出来考了,稍微改一改.

简述题(50分)

1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分)

2、echo,print(),print_r()的区别(3分)

3、能够使HTML和PHP分离开使用的模板(1分)

4、使用哪些工具进行版本控制?(1分)

5、如何实现字符串翻转?(3分)

---------------------------------------------------------------

6、优化MYSQL数据库的方法,(4分,多写多得)

7、PHP的意思(送1分)

8、MYSQL取得当前时间的函数是?,格式化日期的函数是(2分)

9、实现中文字串截取无乱码的方法。(3分)

---------------------------------------------------------------

10、您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?(1分)

11、您是否用过模板引擎? 如果有您用的模板引擎的名字是?(1分)

12、请简单阐述您最得意的开发之作(4分)

13、对于大流量的网站,您采用什么样的方法来解决访问量问题?(4分)

-----------------------------------------------------------------

14、用PHP写出显示客户端IP与服务器IP的代码1分)

15、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们? (2分)

16、如何修改SESSION的生存时间(1分).

17、有一个网页地址, 比如PHP研究室主页: www.phpv.net/,如何得到它的内容?($1分)

18、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(?);(2分)

19、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?(1分)

20、谈谈asp,php,jsp的优缺点(1分)

21、谈谈对mvc的认识(1分)

-------------------------------------------------------------------

22、写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)(2分)

23. 请说明php中传值与传引用的区别。什么时候传值什么时候传引用?(2分)

24. 在PHP中error_reporting这个函数有什么作用? (1分)

25. 请写一个函数验证电子邮件的格式是否正确 (2分)

26. 简述如何得到当前执行脚本路径,包括所得到参数。(2分)

27.如何修改SESSION的生存时间. (1分)

--------------------------------------------------------------------

28、JS表单弹出对话框函数是?获得输入焦点函数是? (2分)

29、JS的转向函数是?怎么引入一个外部JS文件?(2分)

30、foo()和@foo()之间有什么区别?(1分)

31、如何声明一个名为”myclass”的没有方法和属性的类? (1分)

32、如何实例化一个名为”myclass”的对象?(1分)

33、你如何访问和设置一个类的属性? (2分)

34、mysql_fetch_row() 和mysql_fetch_array之间有什么区别? (1分)

--------------------------------------------------------------------

35、GD库是做什么用的? (1分)

36、指出一些在PHP输入一段HTML代码的办法。(1分)

37、下面哪个函数可以打开一个文件,以对文件进行读和写操作?(1分)

(a) fget() (b) file_open() (c) fopen() (d) open_file()

38、下面哪个选项没有将 john 添加到users 数组中? (1分)

(a) $users[] = ‘john’;

(b) array_add($users,’john’);

(c) array_push($users,‘john’);

(d) $users ||= ‘john’;

39、下面的程序会输入是否?(1分)

$num = 10;

function multiply(){

$num = $num * 10;

}

multiply();

echo $num;

?>

40、使用php写一段简单查询,查出所有姓名为“张三”的内容并打印出来 (2分)

表名 UserName Tel Content Date

张三 13333663366 大专毕业 2006-10-11

张三 13612312331 本科毕业 2006-10-15

张四 021-55665566 中专毕业 2006-10-15

请根据上面的题目完成代码:

$mysql_db=mysql_connect(”local“,”root“,”pass“);

@mysql_select_db(”DB“,$mysql_db);

41、如何使用下面的类,并解释下面什么意思?(3)

class test{

function Get_test($num){

$num=md5(md5($num).”En“);

return $num;

}

}

----------------------------------------------------------------------------

42、写出 SQL语句的格式 : 插入 ,更新 ,删除 (4分)

表名 UserName Tel Content Date

张三 13333663366 大专毕业 2006-10-11

张三 13612312331 本科毕业 2006-10-15

张四 021-55665566 中专毕业 2006-10-15

(a) 有一新记录(小王 13254748547 高中毕业 2007-05-06)请用SQL语句新增至表中

(b) 请用sql语句把张三的时间更新成为当前系统时间

(c) 请写出删除名为张四的全部记录

43、请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别(2分)

44、MySQ自增类型(通常为表ID字段)必需将其设为(?)字段(1分)

45、写出以下程序的输出结果 (1分)

$b=201;

$c=40;

$a=$b>$c?4:5;

echo $a;

?>

46、检测一个变量是否有设置的函数是否?是否为空的函数是?(2分)

-----------------------------------------------------------------------------

47、取得查询结果集总数的函数是?(1分)

48、$arr = array(”james“, ”tom“, ”symfony“); 请打印出第一个元素的值 (1分)

49、请将41题的数组的值用”,“号分隔并合并成字串输出(1分)

50、$a = ”abcdef“; 请取出$a的值并打印出第一个字母(1分)

51、PHP可以和sql server/oracle等数据库连接吗?(1分)

52、请写出PHP5权限控制修饰符(3分)

53、请写出php5的构造函数和析构函数(2分)

------------------------------------------------------------------------------

54、以下请用PHPMYADMIN完成

(一)创建新闻发布系统,表名为message有如下字段 (3分)

id 文章id

title 文章标题

content 文章内容

category_id 文章分类id

hits 点击量

(二)同样上述新闻发布系统:表comment记录用户回复内容,字段如下 (4分)

comment_id 回复id

id 文章id,关联message表中的id

comment_content 回复内容

现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面

文章id 文章标题 点击量 回复数量

用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0

(三)上述内容管理系统,表category保存分类信息,字段如下 (3分)

category_id int(4) not null auto_increment;

categroy_name varchar(40) not null;

用户输入文章时,通过选择下拉菜单选定文章分类

写出如何实现这个下拉菜单

填空题

1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量____中;而链接到当前页面的URL记录在预定义变量____中,

2.执行程序段将输出____。

3.在HTTP 1.0中,状态码 401 的含义是____;如果返回“找不到文件”的提示,则可用 header 函数,其语句为____。

4.数组函数 arsort 的作用是____;语句 error_reporting(2047)的作用是____。

5.PEAR中的数据库连接字符串格式是____。

6.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把scrīpt标记及其内容都去掉):____。

7.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句____动态装载PHP模块,然后再用语句____使得Apache把所有扩展名为php的文件都作为PHP脚本处理。

8.语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是____;为了避免多次包含同一文件,可以用语句____来代替它们。

9.类的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函数是____。

10.一个函数的参数不能是对变量的引用,除非在php.ini中把____设为on.

11.SQL中LEFT JOIN的含义是____。如果 tbl_user记录了学生的姓名(name)和学号(ID),tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句____。

12.在PHP中,heredoc是一种特殊的字符串,它的结束标志必须____。

编程题

1. 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名

例如: www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php

2. 在 HTML 语言中,页面头部的 meta. 标记可以用来输出文件的编码格式,以下是一个标准的 meta. 语句

请使用 PHP 语言写一个函数,把一个标准 HTML 页面中的类似 meta. 标记中的 charset 部分值改为 big5

请注意:

1. 需要处理完整的 html 页面,即不光此 meta. 语句

2. 忽略大小写

3. ” 和 “ 在此处是可以互换的

4. ”Content-Type“ 两侧的引号是可以忽略的,但 ”text/html; charset=gbk“ 两侧的不行

5. 注意处理多余空格

3. 写一个函数,算出两个文件的相对路径

如 $a = ”/a/b/c/d/e.php“;

$b = ”/a/b/12/34/c.php“;

计算出 $b 相对于 $a 的相对路径应该是 ../../c/d将()添上

3.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。

4.简述论坛中无限分类的实现原理。

篇9:PHP面试题

这是一份比较全面的PHP面试题,对准备去新公司应聘PHP职位的开发者应该有帮助。 或者说,对招聘PHP开发人员的企业也有些帮助!

简述题(50分)

1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分)

2、echo(),print(),print_r()的区别(3分)

3、能够使HTML和PHP分离开使用的模板(1分)

4、使用哪些工具进行版本控制?(1分)

5、如何实现字符串翻转?(3分)

6、优化MYSQL数据库的方法。(4分,多写多得)

7、PHP的意思(送1分)

8、MYSQL取得当前时间的函数是?,格式化日期的函数是(2分)

9、实现中文字串截取无乱码的方法。(3分)

10、您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?(1分)

11、您是否用过模板引擎? 如果有您用的模板引擎的名字是?(1分)

12、请简单阐述您最得意的开发之作(4分)

13、对于大流量的网站,您采用什么样的方法来解决访问量问题?(4分)

14、用PHP写出显示客户端IP与服务器IP的代码1分)

15、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们? (2分)

16、如何修改SESSION的生存时间(1分).

17、有一个网页地址, 比如PHP研究室主页: www.phpv.net/,如何得到它的内容?($1分)

18、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(?);(2分)

19、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?(1分)

20、谈谈asp,php,jsp的优缺点(1分)

21、谈谈对mvc的认识(1分)

22、写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)(2分)

23. 请说明php中传值与传引用的区别。什么时候传值什么时候传引用?(2分)

24. 在PHP中error_reporting这个函数有什么作用? (1分)

25. 请写一个函数验证电子邮件的格式是否正确 (2分)

26. 简述如何得到当前执行脚本路径,包括所得到参数。(2分)

27.如何修改SESSION的生存时间. (1分)

28、JS表单弹出对话框函数是?获得输入焦点函数是? (2分)

29、JS的转向函数是?怎么引入一个外部JS文件?(2分)

30、foo()和@foo()之间有什么区别?(1分)

31、如何声明一个名为”myclass”的没有方法和属性的类? (1分)

32、如何实例化一个名为”myclass”的对象?(1分)

33、你如何访问和设置一个类的属性? (2分)

34、mysql_fetch_row() 和mysql_fetch_array之间有什么区别? (1分)

35、GD库是做什么用的? (1分)

36、指出一些在PHP输入一段HTML代码的办法。(1分)

37、下面哪个函数可以打开一个文件,以对文件进行读和写操作?(1分)

(a) fget() (b) file_open() (c) fopen() (d) open_file()

38、下面哪个选项没有将 john 添加到users 数组中? (1分)

(a) $users[] = ‘john’;

(b) array_add($users,’john’);

(c) array_push($users,‘john’);

(d) $users ||= ‘john’;

篇10:PHP面试题

PHP面试题大全

基础题:

1.表单中 get与post提交方法的区别?

答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息.

2.session与cookie的区别?

答:session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放

cookie:用来存储连续L一个面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的,

两者都可通过时间来设置时间长短

3.数据库中的事务是什么?

答:事务(transaction)是作为一个单元的`一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作 完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。

简述题:

1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分)

答:echo date(‘Y-m-d H:i:s’, strtotime(‘-1 days’));

2、echo,print(),print_r()的区别(3分)

答:echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)

print() 只能打印出简单类型变量的值(如int,string)

print_r() 可以打印出复杂类型变量的值(如数组,对象)

echo 输出一个或者多个字符串

3、能够使HTML和PHP分离开使用的模板(1分)

答:Smarty,Dwoo,TinyButStrong,Template Lite,Savant,phemplate,XTemplate

5、使用哪些工具进行版本控制?(1分)

答:cvs,svn,vss;

6、如何实现字符串翻转?(3分)

答:echo strrev($a);

7、优化MYSQL数据库的方法。(4分,多写多得)

答:

1、选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如’省份,性别’,最好设置为ENUM

2、使用连接(JOIN)来代替子查询:

a.删除没有任何订单客户:DELETE FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)

b.提取所有没有订单客户:SELECT FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)

c.提高b的速度优化:SELECT FROM customerinfo LEFT JOIN orderid customerinfo.customerid=orderinfo.customerid

WHERE orderinfo.customerid IS NULL

3、使用联合(UNION)来代替手动创建的临时表

a.创建临时表:SELECT name FROM `nametest` UNION SELECT username FROM `nametest2`

4、事务处理:

a.保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败

mysql_query(“BEGIN”);

mysql_query(“INSERT INTO customerinfo (name) 8i VALUES (‘$name1′)”;

mysql_query(“SELECT * FROM `orderinfo` where customerid=”.$id”);

mysql_query(“COMMIT”);

5、锁定表,优化事务处理:

a.我们用一个 SELECT 语句取出初始数据,通过一些计算,用 UPDATE 语句将新值更新到表中,

包含有 WRITE(write) 关键字的 LOCK TABLE 语句可以保证在 UNLOCK TABLES 命令被执行之前,

不会有其它的访问来对 inventory 进行插入、更新或者删除的操作

mysql_query(“LOCK TABLE customerinfo READ, orderinfo WRITE”);

mysql_query(“SELECT customerid FROM `customerinfo` where id=”.$id);

mysql_query(“UPDATE `orderinfo` SET ordertitle=’$title’ where customerid=”.$id);

mysql_query(“UNLOCK TABLES”);

6、使用外键,优化锁定表

a.把customerinfo里的customerid映射到orderinfo里的customerid,

任何一条没有合法的customerid的记录不会写到orderinfo里

CREATE TABLE customerinfo

(

customerid INT NOT NULL,

PRIMARY KEY(customerid)

)TYPE = INNODB;

CREATE TABLE orderinfo

(

orderid INT NOT NULL,

customerid INT NOT NULL,

PRIMARY KEY(customerid,orderid),

FOREIGN KEY (customerid) REFERENCES customerinfo

(customerid) ON DELETE CASCADE

)TYPE = INNODB;

注意:’ON DELETE CASCADE’,该参数保证当customerinfo表中的一条记录删除的话同时也会删除order

表中的该用户的所有记录,注意使用外键要定义事务安全类型为INNODB;

7、建立索引:

a.格式:

(普通索引)->

创建:CREATE INDEX <索引名>ON tablename (索引字段)

修改:ALTER TABLE tablename ADD INDEX [索引名] (索引字段)

创表指定索引:CREATE TABLE tablename([...],INDEX[索引名](索引字段))

(唯一索引)->

创建:CREATE UNIQUE <索引名>ON tablename (索引字段)

修改:ALTER TABLE tablename ADD UNIQUE [索引名] (索引字段)

创表指定索引:CREATE TABLE tablename([...],UNIQUE[索引名](索引字段))

(主键)->

它是唯一索引,一般在创建表是建立,格式为:

CREATA TABLE tablename ([...],PRIMARY KEY[索引字段])

8、优化查询语句

篇11:php经典面试题

1、用PHP打印出前一天的时间格式是2009-02-10 22:21:21(2分)

echo date('Y-m-d H:i:s', strtotime('-1 day'));

或者

$yesterday = time() - (24 * 60 * 60);

echo 'today:'.date('Y-m-d H:i:s').”n“;

echo 'yesterday:'. date('Y-m-d H:i:s', $yesterday).”n“;

2、echo(),print(),print_r()的区别(3分)

echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)

print只能打印出简单类型变量的值(如int,string)

print_r可以打印出复杂类型变量的值(如数组,对象)

echo -- 输出一个或者多个字符串

3、能够使HTML和PHP分离开使用的模板(1分)

smarty,Heyes Template Class等

5、使用哪些工具进行版本控制?(1分)

CVS和SVN,SVN号称下一代CVS,功能强大,不过CVS是老牌,市占率很高.我一直用SVN,题目是问用什么工具呃,这个可能需要这么回答:CVS Server on Apache作服务端,WinCVS作客户端;Subversion on Apache/DAV 做服务端,TortoiseSVN做客户端,或者Subclipse做客户端.

6、如何实现字符串翻转?(3分)

strrev()

或者

$str = ”abcdefg“;

function strrevv($str)

{

$len=strlen($str);

$newstr = '';

for($i=$len;$i>=0;$i--)

{

$newstr .= $str{$i};

}

return $newstr;

}

$showstr = strrevv($str);

echo $showstr.”

“;

---------------------------------------------------------------

7、优化MYSQL数据库的方法。(4分,多写多得)

(1).选取最适用的字段属性,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。

(2).使用连接(JOIN)来代替子查询(Sub-Queries)

(3).使用联合(UNION)来代替手动创建的临时表

(4).尽量少使用 LIKE 关键字和通配符

(5).使用事务和外键

或者

(1).数据库设计方面,这是DBA和Architect的责任,设计结构良好的数据库,必要的时候,去正规化(英文是这个:denormalize,中文翻译成啥我不知道),允许部分数据冗余,避免JOIN操作,以提高查询效率

(2).系统架构设计方面,表散列,把海量数据散列到几个不同的表里面.快慢表,快表只留最新数据,慢表是历史存档.集群,主服务器Read & write,从服务器read only,或者N台服务器,各机器互为Master

(3).(1)和(2)超越PHP Programmer的要求了,会更好,不会没关系.检查有没有少加索引

(4).写高效的SQL语句,看看有没有写低效的SQL语句,比如生成笛卡尔积的全连接啊,大量的Group By和order by,没有limit等等.必要的时候,把数据库逻辑封装到DBMS端的存储过程里面.缓存查询结果,explain每一个sql语句

(5).所得皆必须,只从数据库取必需的数据,比如查询某篇文章的评论数,select count(*) ... where article_id = 就可以了,不要先select * ... where article_id = 然后msql_num_rows.只传送必须的SQL语句,比如修改文章的时候,如果用户只修改了标题,那就... set title = where article_id = 不要set content = (大文本)

(6).必要的时候用不同的存储引擎.比如InnoDB可以减少死锁.HEAP可以提高一个数量级的查询速度

8、PHP的意思(送1分)

Hypertext Preprocessor

9、MYSQL取得当前时间的函数是?,格式化日期的函数是(2分)

now(), DATE_FORMAT(date,format)

10、实现中文字串截取无乱码的方法。(3分)

mb_substr()

---------------------------------------------------------------

11、您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?(1分)

TortoiseSVN-1.2.6 svn-1.2.3

12、您是否用过模板引擎? 如果有您用的模板引擎的名字是?(1分)

smarty

13、请简单阐述您最得意的开发之作(4分)

这个自己想,因为你不再是菜鸟,每个人都有不同的思路,思路也会随之自己的知识而改变……

14、对于大流量的网站,您采用什么样的方法来解决访问量问题?(4分)

首先,确认服务器硬件是否足够支持当前的流量

其次,优化数据库访问。

第三,禁止外部的盗链。

第四,控制大文件的下载。

第五,使用不同主机分流主要流量

第六,使用流量分析统计软件。

-----------------------------------------------------------------

15、用PHP写出显示客户端IP与服务器IP的代码1分)

//显示客户端I

function get_client_ip() {#

if(getenv('HTTP_CLIENT_IP')) {

$client_ip = getenv('HTTP_CLIENT_IP');

} elseif(getenv('HTTP_X_FORWARDED_FOR')) {

$client_ip = getenv('HTTP_X_FORWARDED_FOR');

} elseif(getenv('REMOTE_ADDR')) {

$client_ip = getenv('REMOTE_ADDR');

} else {

$client_ip = $HTTP_SERVER_VAR['REMOTE_ADDR'];

}

return $client_ip;

}

//服务器IP

function get_server_ip(){

if (isset($_SERVER))

{

if($_SERVER['SERVER_ADDR']) $huoqu_ip=$_SERVER['SERVER_ADDR'];

else $huoqu_ip=$_SERVER['LOCAL_ADDR'];

}

else

{

$huoqu_ip=getenv('SERVER_ADDR');

}

return $huoqu_ip;

}

16、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们? (2分)

require()和include()除了怎样处理失败之外在各方面都完全一样。include()产生一个警告而require()则导致一个致命错误。

换句话说,如果你想在丢失文件时停止处理页面,用require()。include() 就不是这样,脚本会继续运行。

require()无论如何都会包含文件,而include()可以有选择地包含.www.

代替用

include_once

require_once

17、如何修改SESSION的生存时间(1分).(没有测试)

$savePath = ”./session_save_dir/“;

$lifeTime = 24 * 3600;

session_save_path($savePath);

session_set_cookie_params($lifeTime);

session_start();

18、有一个网页地址, 比如PHPma主页: www.phpma.com,如何得到它的内容?($1分)

file_get_contents($url)

19、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(?);(2分)

未授权(Unauthorized)

Header(”http/1.0 403 Forbidden“);

经典面试题(PHP基础型II)附答案来源:本站编辑 作者:phpma 时间:2009-02-13 Tag:PHP 经典面试题 (基础型II) 附答案 点击: 44 求职与招聘 往往少不了面试与笔试,作为一个php程序员、多多少少都会有类似的经历……以下是本人收集并整理的PHP面试题目,希望对同行们有所帮助,找到一份合适的php开发工作!(共三节)

以下是面试的题目(一), 下一篇:经典面试题(PHP基础型III)附答案 PHP已经赋予答案:

12、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?(1分)

在大部分语言里,双引号是字符串,单引号是字符。但是在PHP里,字符串的表现形式有3种。即:

单引号

双引号

定界符(heredoc syntax)

看见了吧,单引号居然可以用来表示字符串。那么如果我想表示单引号怎么办?和大多数语言一样,使用转义符号吧。即反斜线”“.那么使用单引号和双引号有什么区别呢?我的观点是没有多大区别。唯一的区别就是双引号可以应用更多的转义符。

让我们定界符吧。它的语法是”<<<“。用法是在其后提供一个标识符,然后在标识符后提供字符串,再在字符串后提供此标识符来结尾。例如:

$str = <<

Hello, this is an example for HEREDOC Syntax.

Please attention to it.

EOD;

echo $str;

?>注意,这里的提供的标志符是EOD,中间的是字符串。

<<

结束标志必须顶格写,并且要有分号结束

13、谈谈asp,php,jsp的优缺点(1分)--(具体请自己搜索)

14、谈谈对mvc的认识(1分)

MVC(Model/View/Controller)模式包括三类对象。Model是应用对象,View是它在屏幕上的表示,

Controller定义用户界面对用户输入的响应方式。

模型-视图-控制器(MVC)是80年代Smalltalk-80出现的一种软件设计模式,现在已经被广泛的使用。

1)模型(Model)

模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑.

2)视图(View)

视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。

3)控制器(controller)

控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。

-------------------------------------------------------------------

15、写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)(2分)

select members.username

from members

order by posts DESC

limit 10

16. 请说明php中传值与传引用的区别。什么时候传值什么时候传引用?(2分)

按值传递:函数范围内对值的任何改变在函数外部都会被忽略

按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改 PHPma

优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。

按引用传递则不需要复制值,对于性能提高很有好处。

17. 在PHP中error_reporting这个函数有什么作用? (1分)

用来配置错误信息回报的等级

18. 请写一个函数验证电子邮件的格式是否正确 (2分)

//if the email address is valid, return true,else return false

function validateEmail($email)

{

if(eregi('^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$',$email) ){

return true;

}else{

return false;

}

}

19. 简述如何得到当前执行脚本路径,包括所得到参数。(2分)

echo $_SERVER['SCRIPT_FILENAME'].”?“.$_SERVER['QUERY_STRING'];

20.如何修改SESSION的生存时间. (1分)

setcookie()

session_set_cookie_params($lifeTime)

--------------------------------------------------------------------

21、JS表单弹出对话框函数是?获得输入焦点函数是? (2分)

alert(),prompt(),confirm()

focus()

22、JS的转向函数是?怎么引入一个外部JS文件?(2分)

window.location.href

23、foo()和@foo()之间有什么区别?(1分)

PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。

注意: @ 运算符只对表达式有效。对新手来说一个简单的规则就是:如果能从某处得到值,就能在它前面加上 @ 运算符。例如,可以把它放在变量,函数和include()调用,常量,等等之前。不能把它放在函数或类的定义之前,也不能用于条件结构例如 if 和 foreach 等。

24、如何声明一个名为”myclass”的没有方法和属性的类? (1分)

class myclass{};

25、如何实例化一个名为”myclass”的对象?(1分)

$newmyclass = new myclass();

26、你如何访问和设置一个类的属性? (2分)

通过-〉

$newmyclass = new myclass();

$temp=$newmyclass->testvalue;

$newmyclass->testvalue=”a“;

27、mysql_fetch_row() 和mysql_fetch_array之间有什么区别? (1分)

mysql_fetch_row -- 从结果集中取得一行作为枚举数组

mysql_fetch_array -- 从结果集中取得一行作为关联数组,或数字数组,或二者兼有

--------------------------------------------------------------------

28、GD库是做什么用的? (1分)

GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。

在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。

29、指出一些在PHP输入一段HTML代码的办法。(1分)

print(”

“);

echo ”

“;

30、下面哪个函数可以打开一个文件,以对文件进行读和写操作?(1分)(c)

(a) fget() (b) file_open() (c) fopen() (d) open_file()

31、下面哪个选项没有将 john 添加到users 数组中? (1分) (b)(c)(d)

(a) $users[] = ‘john’;

(b) array_add($users,’john’);//这个选项不敢确定,但是测试着没有这个函数

(c) array_push($users,‘john’);

(d) $users ||= ‘john’;

32、下面的程序会输入是否?(1分)

$num = 10;

function multiply(){

$num = $num * 10;

}

multiply();

echo $num;

?>

否,局部变量

33、使用php写一段简单查询,查出所有姓名为“张三”的内容并打印出来 (2分)

表名User

Name Tel Content Date

张三 13333663366 大专毕业 2006-10-11

张三 13612312331 本科毕业 2006-10-15

张四 021-55665566 中专毕业 2006-10-15

请根据上面的题目完成代码:

$mysql_db=mysql_connect(”local“,”root“,”pass“);

@mysql_select_db(”DB“,$mysql_db);

$result=mysql_query(”select * from User where Name='张三'“);

while($row=mysql_fetch_array($result))

{

echo $row['Name'].$row['Tel'].$row['Content'].$row['Date'];

echo ”

“;

}

34、如何使用下面的类,并解释下面什么意思?(3)

class test{

function Get_test($num){

$num=md5(md5($num).”En“);

return $num;

}

}

双重md5加密

$testObject = new test();

$encryption = $testObject->Get_test(”xiaotian_ls“);

经典面试题(PHP基础型III)PHP来源:本站编辑 作者:phpma 时间:2009-02-13 Tag:经典面试题(PHP基础型III)PHP 点击: 31 求职与招聘 往往少不了面试与笔试,作为一个php程序员、多多少少都会有类似的经历……以下是本人收集并整理的PHP面试题目,希望对同行们有所帮助,找到一份合适的php开发工作!(共三节)

以下是经典面试题(PHP基础型III)附答案 PHP已经赋予答案:

35、写出 SQL语句的格式 : 插入 ,更新 ,删除 (4分)

表名User

Name Tel Content Date

张三 13333663366 大专毕业 2006-10-11

张三 13612312331 本科毕业 2006-10-15

张四 021-55665566 中专毕业 2006-10-15

(a) 有一新记录(小王 13254748547 高中毕业 2007-05-06)请用SQL语句新增至表中

INSERT INTO User('Name','Tel','Content','Date') VALUES('小王','13254748547','高中毕业','2007-05-06')

(b) 请用sql语句把张三的时间更新成为当前系统时间

UPDATE User SET Date=DATE_FORMAT(NOW(),'%Y-%m-%d') WHERE Name='张三'

(c) 请写出删除名为张四的全部记录

DELETE FROM User WHERE Name='张四'

36、请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别(2分)

char 固定长度的字符,不足的长度用空格补上;varchar好象没有这个类型,

37、MySQ自增类型(通常为表ID字段)必需将其设为(?)字段(1分)

38、写出以下程序的输出结果 (1分)

$b=201;

$c=40;

$a=$b>$c?4:5;

echo $a;

?>

答案:4

39、检测一个变量是否有设置的函数是否?是否为空的函数是?(2分)

isset();empty();

-----------------------------------------------------------------------------

40、取得查询结果集总数的函数是?(1分)

mysql_fetch_array();

41、$arr = array('james', 'tom', 'symfony'); 请打印出第一个元素的值 (1分)

echo $arr['0'];

42、请将41题的数组的值用','号分隔并合并成字串输出(1分)

$arr_im = implode(”,“,$arr);

print_r($arr_im);

43、$a = 'abcdef'; 请取出$a的值并打印出第一个字母(1分)

$a = 'abcdef';

echo $a;

$a_exp = substr($a,0,1);

echo ”

“;

echo $a_exp;

44、PHP可以和sql server/oracle等数据库连接吗?(1分)

当然可以

45、请写出PHP5权限控制修饰符(3分)

PHP5引入了访问修饰,被放在属性和方法声明的前面用以控制它们的可见性。PHP5中支持以下三种不同的访问修饰:

1、默认的是public(公共),即当你没有为属性和方法指定访问修饰时就默认为public的。而这些public的项目在类内类外都可以访问。

2、private(私有)访问修饰,意味着被修饰的项只能在类中被访问。如果你没使用__get()和__set(),就最好给每个属性都加上private修饰。也可以给方法加private修饰,例如一些只在类中才用到的函数。private修饰的项不能被继承(更多详细内容会在本章后续部分提到)。

3、protected(保护)修饰的项能在类及其子类中访问。同样更多详细内容会在本章后续部分提到。现在暂时可以把protected看成界于public和private之间的修饰。

46、请写出php5的构造函数和析构函数(2分)

如果你在一个类中声明一个函数,命名为__construct,这个函数将被当成是一个构造函数并在建立一个对象实例时被执行. 清楚地说,__是两个下划线. 就像其它任何函数一样,构造函数可能有参数或者默认值. 你可以定义一个类来建立一个对象并将其属性全放在一个语句(statement)中.

你也可以定义一个名为__destruct的函数,PHP将在对象被销毁前调用这个函数. 它称为析构函数.

------------------------------------------------------------------------------

47、以下请用PHPMYADMIN完成--(没有测试)

(一)创建新闻发布系统,表名为message有如下字段 (3分)

id 文章id

title 文章标题

content 文章内容

category_id 文章分类id

hits 点击量

(二)同样上述新闻发布系统:表comment记录用户回复内容,字段如下 (4分)

comment_id 回复id

id 文章id,关联message表中的id

comment_content 回复内容

现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面

文章id 文章标题 点击量 回复数量

用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0

select message.id,message.title, message.hits sum(select count(0) from comment where message.id=comment.id) as comsums from message comment order by comsums;

(三)上述内容管理系统,表category保存分类信息,字段如下 (3分)

category_id int(4) not null auto_increment;

categroy_name var40) not null;

用户输入文章时,通过选择下拉菜单选定文章分类

写出如何实现这个下拉菜单

//以下使用的adodb

$cnn =& NewADOConnection('mysql');

$cnn ->Connect($db_hostspec, $db_username, $db_password, $db_database);

$cnn ->SetFetchMode(ADODB_FETCH_ASSOC);

if (!$cnn) message(”无法连接数据库 $db_database“);

$sql = ”SELECT * FROM `category` WHERE 1;

$rst =& $cnn ->Execute($sql);

if (!$rst) die($cnn ->ErrorMsg());

$arr_categroy = $rst ->GetArray();

[php经典面试题]

高职单招面试题及答案

java面试题的题目及答案

PHP基础教程 字符串

华为面试题

Google面试题

腾讯面试题

面试题经典回答

卡夫面试题

php程序员试用期工作总结

php实训报告范文

php常用面试题及答案(集锦11篇)

欢迎下载DOC格式的php常用面试题及答案,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式
点击下载本文文档