文档库 最新最全的文档下载
当前位置:文档库 › php面试题

php面试题

非技术性:
离职原因:一般不宜说薪资待遇问题,宜强调来这家公司面试的原因,有针对地对这家公司某方面进行夸赞,不宜强调离开上家公司的原因
哪个项目印象最深,从里面学到了什么东西
宜说是自己亲自做的一个项目,里面什么问题没解决,最后是通过什么方法解决的

dede技术:
dede里生成静态文件使用的是什么技术
移动dede程序,需要改几个参数
dede里联系我们这样的页面怎么做

数据库:
1、MySQL自增类型(通常为表ID字段)必需将其设为(?)字段(1分)
AUTO_INCREMENT
2、写出 SQL语句的格式 : 插入 ,更新 ,删除 (4分)
表名User
Name Tel Content Date
张三 133******** 大专毕业 2006-10-11
张三 136******** 本科毕业 2006-10-15
张四 021-******** 中专毕业 2006-10-15
(a) 有一新记录(小王 132******** 高中毕业 2007-05-06)请用SQL语句新增至表中

Insert INTO User('Name','Tel','Content','Date') VALUES('小王','132********','高中毕业','2007-05-06')
(b) 请用sql语句把张三的时间更新成为当前系统时间

Update User SET Date=DATE_FORMAT(NOW(),'%Y-%m-%d') Where Name='张三'
(c) 请写出删除名为张四的全部记录

Delete FROM User Where Name='张四'
3、已知有如下数据库表:
S(s#,sn,sd,sa) s#,sn,sd,sa分别代表学号,学生姓名,所属单位,学员年龄
C(c#,cn) c#,cn分别代表课程编号,课程名称
SC(s#,c#,g)s#,c#,f分别代表学号,所选修的课程编号,学习成绩
1) 使用标准sql语句查询学号为1号学生选修课程的名称 5分
2) 使用标准sql语句查询选修课程编号为‘c2’的学生姓名和所属单位 5分
3) 一次性往S表里插入两条数据(1,小王,北京一建,32),(2,小张,北京一建,35) 4分
4、以下请用PHPMYADMIN完成
(一)创建新闻发布系统,表名为message有如下字段 (3分)
id 文章id
title 文章标题
content 文章内容
category_id 文章分类id
hits 点击量
Create TABLE 'message'(
'id' int(11) NOT NULL auto_increment,
'title' varchar(200) default NULL,
'content' blob,
'category_id' int(11) default NULL,
'hits' int(11) default NULL,
PRIMARY KEY('id')
) ENGINE=InnoDB DEFAULT CHARSET=utf8
(二)同样上述新闻发布系统:表comment记录用户回复内容,字段如下 (4分)
comment_id 回复id
id 文章id,关联message表中的id
comment_content 回复内容
现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面
文章id 文章标题 点击量 回复数量
用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0
Select message.id id,message.title title,IF(message.`hits` IS NULL,0,message.`hits`) hits,IF(comment.`id` is NULL,0,count(*)) number
FROM message LEFT JOIN comment ON message.id=comment.id
GROUP BY m

essage.`id`
5、一个order合同表 有orderid合同,region地区,sale销售,total合同金额四个字段
数据如下:
1 a 小王 3000
2 a 小李 4000
3 a 小王 5000
4 b 小张 2000
统计各个地区的销售总数
统计各个地区的销售金额总数,并且按照高低排序
6、数据库中的事务是什么
事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消
7、优化MYSQL数据库的方法。
答:
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) VALUES ('$name1')";
mysql_query("SELECT * FROM `orderinfo` where customerid=".$id");
mysql_query("COMMIT");
5、锁定表,优化事务处理:
a.我们用一个 SELECT 语句取出初始数据,通过一些计算,用 UPDATE 语句将新值更新到表中。
包含有 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;
注意:'O

N 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、优化查询语句
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";

php技术:
1、mysql_db_name
2、防止SQL注入漏洞一般用__addslashes___函数。
3、GD 函式库用来做什么?
答:这个函式库让你处理和显示各式格式的图档,它的另一个常见用途是制作所图档。GD 以外的另一个选择是 ImageMagick,但这个函式库并不内建于 PHP 之中,必须由系统管理员安装在此服器上
4、请举例说明在你的开发过程中用什么方法来加快页面的加载速度
答:要用到服务器资源时才打开,及时关闭服务器资源,数据库添加索引,页面可生成静态,图片等大文件单独服务器。使用代码优化工具
5、session与cookie的区别
session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放
cookie:用来存储连续访问一个页面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。
两者都可通过时间来设置时间长短
6、array_unshift array_shift array_push array_pop的区别
7、php里序列化是什么函数
serialize
8、简述论坛中无限分类的实现原理
答案:表中建一个对应父类的ID,然后进行关联
9、位与,位或,位异或,位移
10、如何通过javascript判断一个窗口是否已经被屏蔽
获取open()的返回值,如果是null,就是屏蔽了
11、url重写是怎么回事
URL重写就是首先获得一个进入的URL请求然后把它重新写成网站可以处理的另一个URL的过程
访问的时候
http://localhost/index.html 被映射到 http://localhost/index.php
12、

写出裴波那契数列的程序
13、读写文件,查找文件里https://www.wendangku.net/doc/4b2582951.html,出现的次数
14、输出当前时间上个月的第一天
date('Y-m-01', strtotime('-1 month'));
15、mysql里替换函数
16、求两个日期的差数,例如2007-2-5 ~ 2007-3-6 的日期差数
(strtotime(‘2007-3-6’)-strtotime(‘2007-2-5’))/3600*24
17、javascript 30秒后跳转到计划页面
setTimeout("location='2.php'",2000);
18、一个数组,打印出数组里的最大值,然后打印出剩余中的最小值,然后打印出剩余中的最大值,然后打印出剩余中的最小值,依此类推
foreach($values as $i=>$val){
if($i%2==0){
$min=max($values);}
else
{$min = min($values);}
$key = array_search($min, $values);
$result[] = $min;
unset($values[$key]);
}
print_r($result);
19、不借助第三个变量,交换两个变量的值
int a,b;
a=10;b=12;
a=b-a;
b=b-a;
a=b+a;
20、删除数组中相同的元素,只保留一个
$a=array(1,4,5,1,1,2,3,4,5,7,7,8,1,9,5,7,6,5,5,5,3,2,2,1);
$b=$a;
for($i=0;$i$m=$a[$i];
for($j=$i+1;$jif($a[$j]==$m){
unset($b[$j]);
}
}}
echo "

";
print_r($b);
echo "
";
21、交换两个div内容,用javascript
22、mysql5 mysql4区别
5有存储过程 视图 触发器
23、php4 php5区别
PHP5 中的对象已经进行了较系统、较全面的调整
* 构造函数和析构函数
* 对象的引用
* 对象的克隆
* 对象中的私有、公共及受保护模式
* 接口 (Interfaces)
* 抽象类
* __call
* __set 和 __get
* 静态成员
24、说明你常用的存储引擎,并举例说出优缺点
我作为使用MySQL的用户角度出发,Innodb和MyISAM都是比较喜欢的,但是从我目前运维的数据库平台要达到需求:99.9%的稳定性,方便的扩展性和高可用性来说的话,MyISAM绝对是我的首选。
原因如下:
1、首先我目前平台上承载的大部分项目是读多写少的项目,而MyISAM的读性能是比Innodb强不少的。
2、MyISAM的索引和数据是分开的,并且索引是有压缩的,内存使用率就对应提高了不少。能加载更多索引,而Innodb是索引和数据是紧密捆绑的,没有使用压缩从而会造成Innodb比MyISAM体积庞大不小。
3、从平台角度来说,经常隔1,2个月就会发生应用开发人员不小心update一个表where写的范围不对,导致这个表没法正常用了,这个时候 MyISAM的优越性就体现出来了,随便从当天拷贝的压缩包取出对应表的文件,随便放到一个数据库目录下,然后dump成sql再导回到主库,并把对应的 binlog补上。如果是Innodb,恐怕不可能有这么快速度,别和我说让Innodb定期用导出xxx.sql机制备份,因为我平台上最小的一个数据库实例的数据量基本都是几十G大小。
4、从我接触的应用逻辑来说,select count(*) 和order by 是最频繁的

,大概能占了整个sql总语句的60%以上的操作,而这种操作Innodb其实也是会锁表的,很多人以为Innodb是行级锁,那个只是 where对它主键是有效,非主键的都会锁全表的。
5、还有就是经常有很多应用部门需要我给他们定期某些表的数据,MyISAM的话很方便,只要发给他们对应那表的frm.MYD,MYI的文件,让他们自己在对应版本的数据库启动就行,而Innodb就需要导出xxx.sql了,因为光给别人文件,受字典数据文件的影响,对方是无法使用的。
6、如果和MyISAM比insert写操作的话,Innodb还达不到MyISAM的写性能,如果是针对基于索引的update操作,虽然MyISAM可能会逊色Innodb,但是那么高并发的写,从库能否追的上也是一个问题,还不如通过多实例分库分表架构来解决。
7、如果是用MyISAM的话,merge引擎可以大大加快应用部门的开发速度,他们只要对这个merge表做一些select count(*)操作,非常适合大项目总量约几亿的rows某一类型(如日志,调查统计)的业务表。
当然Innodb也不是绝对不用,用事务的项目如模拟炒股项目,我就是用Innodb的,活跃用户20多万时候,也是很轻松应付了,因此我个人也是很喜欢Innodb的,只是如果从数据库平台应用出发,我还是会首选MyISAM。
25、通过程序遍历一个目录下的所有文件和文件夹
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;
}
}
}
26、模板 框架区别
27、写出文章内容分页程序,一页1024个字节(文章内容自定义)
$content="分布分布分布11分";//文章内容
$pagesize=1024;//一页放的字节数
while(!empty($content)){
$arr[]=mb_substr($content,0,$pagesize,'UTF-8');
$content=mb_substr($content,$pagesize,"UTF-8");
}
echo $arr[$page-1]."
页数";
for($i=1;$i<=count($arr);$i++)
{
echo " ".$i."";}
28、一个函数的参数不能是对变量的引用,除非在php.ini中把_allow_call_time_pass_reference__设为on
29、B2c B2C是英文Business-to-Consumer(商家对客户)
30、用五种方法得到一个文件的扩展名
31、session原理
32、使用PHP描述顺序查找和二分查找(也叫做折半查找)算法

function half_search($array, $low, $high, $k){
if ($low <= $high){
$mid = int

val(($low+$high)/2);
if ($array[$mid] == $k){
return $mid;
}
elseif ($k < $array[$mid]){
return half_search($array, $low, $mid-1, $k);
}
else{
return half_search($array, $mid+1, $high, $k);
}
}
return false;
}
function queue_search($array, $k){
$n=count($array);
for($i=0; $i<$n; $i++){
if($array[$i]==$k){
break;
}
}
if ($i<$n){
return $i;
}
else{
return false;
}
}

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

echo date(‘Y-m-d H:i:s’,date(‘U’)-86400);

或者 echo date('Y-m-d H:i:s', strtotime('-1 day'));
time ( void )返回当前时间的时间戳

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

echo 是PHP语句,语句是没有返回值的,而print和print_r是函数,函数可以有返回值。
print只能打印出简单类型变量的值(如int,string)
print_r可以打印出复杂类型变量的值(如数组,对象)
echo -- 输出一个或者多个字符串
var_dump 可以打印出复杂类型变量的值和类型


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

smarty模板


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

CVS和SVN [ subversion ]


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

使用php函数strrev( ‘abc’) 123456

for($i=strlen($string);$i>0;$i--){
$str[]=$string[$i-1];
}
implode('',$str);

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

(1).选取最适用的字段属性,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。
(2).使用连接(JOIN)来代替子查询(Sub-Queries)
(3).使用联合(UNION)来代替手动创建的临时表
(4).尽量少使用 LIKE 关键字和通配符
(5).使用事务和外键

7、PHP的意思(送1分)

PHP 是一种服务器端的,嵌入HTML的脚本语言。

英文“超级文本预处理语言”(Hypertext Preprocessor)的缩写


8、MYSQL取得当前时间的函数是?格式化日期的函数是(2分)
以下是mysql函数
取得当前时间的函数:now( )
格式化日期:date_format( date, format )例如:date_format(now(),'%y-%m-%d')
UNIX时间戳转换为日期用函数: FROM_UNIXTIME() 参数是时间戳
日期转换为UNIX时间戳用函数: UNIX_TIMESTAMP() 参数是时间,无参数时为当前时间的时间戳

php 时间类型转化为时间戳:strtotime
php 时间戳转化为特定格式的时间类型:date
9、实现中文字串截取无乱码的方法。(3分)

当用 substr 截取中文字符的时候会出现乱码,当然你如果装了 mb 扩展, 用 mb_substr截取就不会出现这种问题,如果你用的是虚拟主机,主机上又没装 mb扩展的话,你可以用下面的函数截取
# Cut chinese string into appointed length
# @param [string] string need deal
# @param [start] position to cut from
# @param [length] length to cut
# @return str

ing
function GBsubstr($string, $start, $length) {
if(strlen($string)>$length){
$str=null;
$len=$start+$length; 4
for($i=$start;$i<$len;$i++){
if(ord(substr($string,$i,1))>0xa0){
$str.=substr($string,$i,2);
$i++;
}else{
$str.=substr($string,$i,1);
}
}
return $str.'...';
}else{
return $string;
}
}


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

CVS subversion SVN


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

Smarty Discuz


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

。。。


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

首先,确认服务器硬件是否足够支持当前的流量
其次,优化数据库访问
第三,禁止外部的盗链
第四,控制大文件的下载
第五,使用不同主机分流主要流量
第六,使用流量分析统计软件


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

客户端IP: echo $_SERVER[‘REMOTE_ADDR’]; 或者: getenv('REMOTE_ADDR');

服务器IP:


$serverIP=gethostbynamel("webpro01");

echo "Server IP Address:";

for ($i=0; $i
echo "
".$netscapeftp[$i];

}

echo "
";

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

1、PHP程序执行到require()时,只会读取一次档案,故常放在程序开头,档案引入后PHP会将网页档重新编译,让引入档成为原先网页的一部分。

2、PHP程序执行到include()时,每次皆会读取档案,故常用于流程控制的区段,如条件判断或循环中。

3、require() :如果文件不存在,会报出一个fatal error.脚本停止执行

4、include() : 如果文件不存在,会给出一个 warning,但脚本会继续执行

5、推荐使用require_once()和include_once(),可以检测文件是否有重复包含。


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

1.将php.ini 中session.gc_maxlifetime 设置为 9999(默认为 1440)重启 apache 即可

2.

$savePath = "./session_save_dir/";

$lifeTime = 24 * 3600;

session_save_path($savePath);

session_set_cookie_params($lifeTime);

session_start();

3.

setcookie() 或session_set_cookie_params($lifeTime)


17、有一个网页地址, 比如PHP开发资源网主页: https://www.wendangku.net/doc/4b2582951.html,/index.html,如何得到它的内容?($1分)

//需要读取的page地址
$http_page_url="https://www.wendangku.net/doc/4b2582951.html,/index.html";
//打开远程文件
$read_file=fopen($http_page_url,"rb");
if (!feof($read_file)) {
//读取远程文件
$file_stream = "";
do {
$data = fread($read_file, 8192);
if (strlen($data) == 0) {
break;
}
$file_stream.= $data;
} while(true);
}

echo $file_stream; //输出内容




PHP 5 及更高版本可以:


$handle = fopen("https://www.wendangku.net/doc/4b2582951.html,/index.html", "rb");

$contents = stream_get_contents($handle);

fclose($handle);

echo $contents;

?>



最简单的方法是调用函数:


print file_get_contents('https://www.wendangku.net/doc/4b2582951.html,/index.html');

?>



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

状态值为401,代表未被授权; header("Location: https://www.wendangku.net/doc/4b2582951.html,");


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

heredoc的语法是用"<<<"加上自己定义成对的标签,在标签范围內的文字视为一个字符串

$str = <EOD;
?>
需要注意的是:

1、"<<<"后面的EOD是自己定义的标签名称,必须要成对,而且后面要加上分号表示结束。2、结束的标签前面最好不要有空格,以免发生错误!


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

ASP全名Active Server Pages,是一个WEB服务器端的开发环境, 利用它可以产生和运
行动态的、交互的、高性能的WEB服务应用程序。ASP采用脚本语言VB Script(Java script
)作为自己的开发语言。
PHP是一种跨平台的服务器端的嵌入式脚本语言. 它大量地借用C,Java和Perl语言的语法
, 并耦合PHP自己的特性,使WEB开发者能够快速地写出动态生成页面.它支持目前绝大多数数
据库。还有一点,PHP是完全免费的,不用花钱,你可以从PHP官方站点(http://www.php.ne
t)自由下载。而且你可以不受限制地获得源码,甚至可以从中加进你自己需要的特色。
JSP 是Sun公司推出的新一代站点开发语言,他完全解决了目前ASP,PHP的一个通病--
脚本级执行(据说PHP4 也已经在Zend 的支持下,实现编译运行).Sun 公司借助自己在Jav
a 上的不凡造诣,将Java 从Java 应用程序 和 Java Applet 之外,又有新的硕果,就是Js
p--Java Server Page。Jsp 可以在Serverlet和JavaBean的支持下,完成功能强大的站点
程序。
三者都提供在 HTML 代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。
但JSP代码被编译成 Servlet 并由 Java 虚拟机解释执行,这种编译操作仅在对 JSP 页面的
第一次请求时发生。在 ASP 、PHP、JSP 环境下, HTML 代码主要负责描述信息的显示样式
,而程序代码则用来描述处理逻辑。普通的 HTML 页面只依赖于 Web 服务器,而 ASP 、PH
P、JSP 页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到
HTML 代码中,然后一起发送给浏览器。 ASP 、PHP、 JSP三者都是面向 Web 服务器的技术
,客户端浏览器不需要任何附加的软件支持。

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

模式。模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。控制器与视图的分离,支持了视图与不同控制器结合的灵活性,以实现不同的操作模式,例如对普通用户、专业用户、或不使用控制器建立的只读视图。变化-传播机制可以确保所有相关的视图及时得到模型数据变化,从而使所有关联的视图和控制器做到行为同步。

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

Select username FROM members orDER BY posts DESC LIMIT 0,10;


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

Call by value (传值):指从主程序将变量内容传递给函数的参数,无论在函数内如何修改、变化该参数值,都不影响主程序原本变量的内容,即使变量名称相同。

调用方式:函数名(参数1,参数2);

Call by address/reference (传引用 传址):指从主程序将变量地址传递给函数的参数,在函数内若修改、变化该参数值,会修改主程序原本变量的内容,即主程序与函数存取的是同一变量。

调用方式:函数名(&参数1,&参数2);

按值传递:函数范围内对值的任何改变在函数外部都会被忽略
按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改
优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。
按引用传递则不需要复制值,对于性能提高很有好处。


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

error_reporting( ) 用于设置php的侦听错误的级别.[用来配置错误信息回报的等级].

// Turn off all error reporting
error_reporting(0);
// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);
// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL ^ E_NOTICE);
// Report all PHP errors

error_reporting(E_ALL);
// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
?>


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

(1)Javascript实现:

function checkEmail(form){

re=/^[^\s]+@[^\s]+\.[^\s]+$/;

if(re.test(form.value)){

alert(‘符合验证’);

}else{

alert(‘验证失败’);

}

}

(2)php实现

function CheckMailAdr($str){
return(eregi(“^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$“,$s

tr));
}

(3)

function validateEmail($email)
{
if(eregi('^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$',$email) ){
return true;
}else{
return false;
}
}


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

说明:例如有一个脚本 https://www.wendangku.net/doc/4b2582951.html,,传给他的参数有参数1,参数2,参数3…。传递参数的方法有可能是GET有可能是POST,那么现在请写出类似:https://www.wendangku.net/doc/4b2582951.html,/script.php?参数1=值1&参数2=值2….. 的结果。

1获取所有参数:可以用以下方法:
//获取post的数据
while (list($var, $value) = each($HTTP_POST_VARS))
{
echo “$var = $value n“;
}
//获取get方式的数据
while (list($var, $value) = each($HTTP_GET_VARS))
{
echo “$var = $value n“;
}



2. echo $_SERVER['scrīpt_FILENAME']."?".$_SERVER['QUERY_STRING'];

3、$_SERVER['REQUEST_URI']
27、JS表单弹出对话框函数是?获得输入焦点函数是? (2分)

弹出对话框: alert(),prompt(),confirm()
获得输入焦点 focus()

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

转向函数 window.location.href

引入外部JS文件:


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

@foo()无控制错误输出


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

class myclass{
}


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

$newmyclass = new myclass("localhost");


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

$newmyclass = new myclass();
$temp=$newmyclass->test;
$newmyclass->test="a";


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

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


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

gd库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。
在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。


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

1. echo ‘’;直接输出

2. require include 包含进来一段html代码

3. 由XML文件得到


36、下面哪个函数可以打开一个文件,以对文件进行读和写操作?(1分)
(a) fget() (b) file_open() (c) fopen() (d) open_file()

(c)是正确的


37、下面哪个选项没有将 john 添加到users 数组中? (1分)
(a) $users[] = ‘john’; $users[] = ‘john’; $users[] = ‘john’;
(b) array_add($users,’john’);
(c) array_push($users,‘john’); array_pop
(d) $users ||= ‘john’;

(b) (d) 均是错误的写法


38、下面的程序会输入是否?(1分)
$num = 10;
function multiply(){
global $num;


$num = $num * 10;
}
multiply();
echo $num;
?>
输出 10


39、使用php写一段简单查询,查出所有姓名为“张三”的内容并打印出来 (2分)
表名User
Name Tel Content Date
张三 133******** 大专毕业 2006-10-11
张三 136******** 本科毕业 2006-10-15
张四 021-******** 中专毕业 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($rs=mysql_fetch_array($result)){
echo $rs[name];}



40、如何使用下面的类,并解释下面什么意思?(3)
class test{
function Get_test($num){
$num=md5(md5($num)."En");
return $num;
}
}

双重md5加密
$testObject = new test();
$encryption = $testObject->Get_test("xiaotian_ls");


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

int 数值类型 char 固定长度字符串 varchar 可变长字符串 datetime 日期时间型 text 字符字符串
char列的长度固定为创建表时声明的长度.varchar列中的值为可变长字符串.



44、写出以下程序的输出结果 (1分)
$b=201;
$c=40;
$a=$b>$c?4:5;
echo $a;

4


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

isset($a) empty($a)


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

mysql_num_rows($res);


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

echo $arr[0];


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

echo $arr[0].$arr[1].$arr[2];


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

echo $a{0};


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

可以


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

private protected public


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

__construct __destruct


53、上述内容管理系统,表category保存分类信息,字段如下 (3分)
category_id int(4) not null auto_increment;
categroy_name varchar(40) not null;
用户输入文章时,通过选择下拉菜单选定文章分类
写出如何实现这个下拉菜单
function categoryList()
{
echo "