六道php面试题附答案
2011 – 08 – 04 更新
1、不用新变量直接交换现有两个变量的值. (考php基本功)
答案:list($a, $b) = array($b, $a);
2、PHP数字金额转大小格式,同时说明思路 (考数组掌握)
3、SQL查询语句如下:
select * from table where (ID = 10) or (ID = 32) or (ID = 22) or (ID = 76) or (ID = 13) or (ID = 44)
让结果按10,32,22,76,13,44的顺序检索出来,请问如何书写? (sql能力)
4、简单写一个上传文件程序,要求同时上传文件数量可以人为控制 (逻辑能力)
5、php同时调用3个数据库中的一个表的信息(架设A.a.aid=B.b.bid=C.c.cid),请说明思路及书写部分代码
6、现有一IM软件,使用id、email做为注册条件,假设已注册1040人,有一zh_cn论坛,使用id、email做为注册条件,假设已注册200人,有一en_us论坛,使用id、email做为注册条件,假设已注册150人
要求:将三者同步,使用统一的注册流程 ,写出设计思路
===============================================
1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量
(1)中;而链接到当前页面的URL记录在预定义变量(2)中。
2.执行程序段将输出(3)。
4.数组函数 arsort 的作用是(6);语句 error_reporting(2047)的作用是(7)。
5.PEAR中的数据库连接字符串格式是(8)。
6.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉):(9)。
7.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句(10)动态装载PHP模块,然后再用语句(11)使得Apache把所有扩展名为php的文件都作为PHP脚本处理。
9.类的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函数是(14)。
11.SQL 中LEFT JOIN的含义是(16)。如果 tbl_user记录了学生的姓名(name)和学号(ID),tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句(17)
===============================================
简述题(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研究室主页: http://www.phpv.net/index.html,如何得到它的内容?($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 里取出文件的扩展名
例如: http://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.简述论坛中无限分类的实现原理。
===============================================
1.解释一下PHP里面的三元运算符
举例说明:a= b==c? 1 : 2 ,若b==c,则a的值为1 否则a的值为2
2.如何知道有几个参数传入到了一个function?
func_num_args() 函数返回传入的参数的个数。
3.PHP里面所有的对象是passed by value (值传递)还是 passed by reference(引用传递)?
PHP里面所有的对象都是值传递。
4.如何调用父类的构造方法?
使用parent::constructor($value)
5._sleep和_wakeup有什么特殊含义?
_sleep返回需要被保存的变量的数组,而_wakeup则是取得这些需要被保存的变量
===============================================
1. 把PHP.ini 里的 display_errors = On 才可以显示错误位置
2. 习惯使用echo 或者 print 打印
3. 使用注释来屏蔽符号来调试
// ……….
/*………… */
#…………..
4. 看错误信息
==============1.include和require有什么区别?
区别在于他们如何处理失败, 如果require的文件没有找到, 会造成fatal error,脚本停止执行,如果include的文件没有找到, 会显示警告,但是脚本会继续执行。
2.给一个变量赋值为0123,但是输出该变量的值总是为其他数字,请问这是什么问题?
PHP 解释器会把以0开始的数字当做是八进制的,所以它的值会变成八进制的。
3.PHP里面如何定义一个常量(constant)?
通过define()指令,例如:define(“MYCONSTANT”, 100)
4.如何对一个变量进行值传递?
可以像C++那样, 在变量的前面加上&, 例如:$a = &$b
5.在PHP里面可以对string “10″ 和整型 11进行比较吗?
可以,PHP内部实现会把所有东西转换成整型,所以数字10和11可以进行比较
6.在什么情况下需要用endif 来结束条件语句?
当if语句后面跟的是冒号”:”而不是大括号{时,需要用endif来结束条件语句
=================================
$message和$$message的区别
$message是个简单的变量,$$message是变量的变量,表示这个变量的值。例如$user = ‘zhangsan’ 相当于 $message = ‘user’; $$message = ‘zhangsan’
===============================================
新浪网技术部笔试题
2011 – 08 – 04 更新
一、php基础知识
1、strlen()与mb_strlen的作用分别是什么
2、下列哪个函数是用正则表达式将字符串分割到数组中()
A、Split
B、implode
C、explode
D、join
3、写出下列程序的输出结果
$x=87;
$y=($x%7)*16;
$z=$x>$y?1:0;
echo $z;
?>
4、写出smarty模板的特点
5、写出下列几个预定义全局变量的作用
$_SERVER[‘DOCUMENT_ROOT’]
当前运行脚本所在的文档根目录。在服务器配置文件中定义。
$_SERVER[‘HTTP_HOST ‘]
当前请求的 Host: 头部的内容
$_SERVER[‘REMOTE_ADDR’]
正在浏览当前页面用户的 IP 地址
$_SERVER[‘HTTP_REFERER’]
链接到当前页面的前一页面的 URL 地址
$_SERVER[‘SERVER_NAME’]
当前运行脚本所在服务器主机的名称
$_FILES
包含有所有上传的文件信息。
$_FILES[‘userfile’][‘name’]
客户端机器文件的原名称。
$_FILES[‘userfile’][‘type’]
文件的 MIME 类型,如果浏览器提供此信息的话。一个例子是“image/gif”。不过此 MIME 类型在 PHP 端并不检查,因此不要想当然认为有这个值。
$_FILES[‘userfile’][‘size’]
已上传文件的大小,单位为字节。
$_FILES[‘userfile’][‘tmp_name’]
文件被上传后在服务端储存的临时文件名。
$_FILES[‘userfile’][‘error’]
和该文件上传相关的错误代码。
6、include和require都能把另外一个文件包含到当前文件中,他们有什么区别?Include和include_once又有什么区别?
7、写出一个能创建多级目录的PHP函数
二、操作系统
1请解释下列10个shell命令的用途
top、ps、mv、find、df、cat、chmod、chgrp、grep、wc
2、写出下列服务的用途和默认端口
ftp、ssh、http、telnet、https
三、面向对象
1、写出php的public、protected、private三种访问控制模式的区别
2、写出下列程序的输出结果
class a{
protected $c;
public function a(){
$this ->c=10;
}
}
class b extends a
{
public function print_data(){
return $this->c;
}
}
$b=new b();
echo $b ->print_data();
?>
3、设计模式考察:请用单态设计模式方法设计类满足如下需求
请用PHP5代码编写类实现在每次对数据库连接的访问中都只能获得唯一的一个数据库连接,具体连接数据库的详细代码忽略,请写出主要逻辑代码
四、数据库
1、写出下面2个PHP操作Mysql函数的作用和区别
mysql_num_rows()
mysql_affected_rows()
2、sql语句应该考虑哪些安全性?
3、简单描述mysql中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响(从读写两方面)
4、有一个留言板,用mysql做数据库,用户信息包括:用户名,密码,email 留言内容包括:留言ID,标题,内容,发表时间,状态(审核,未审核)
请实现下列需求:
1)数据库结构。无需写建表语句,用类似下面的表格,描述清楚即可
表明 table_aaa
字段名 字段说明 字段类型 索引
name 姓名 Varchar(64) 唯一索引
gender 性别 Enum(‘M’,‘F’)
注意,要在索引栏中注明是否需要创建索引,以及要创建的索引的类型
2)用一个sql语句查询出发表留言数量大于10条的用户名及其留言数量,查询结果按文章数量降序排列
五、系统分析
假设有一个博客系统,数据库存储采用mysql,用户数量为1000万,预计文章总数为10亿,每天有至少10万的更新量,每天访问量为5000万,对数据库的读写操作的比例超过10:1,你如何设计该系统,以确保其系统高效,稳定的运行?
提示:可以从数据库设计,系统框架,及网络架构方面进行描述,可以自由发挥
===============================================
1 请说明 PHP 中传值与传引用的区别。什么时候传值什么时候传引用?
答: 传值只是把某一个变量的值传给了另一个变量,而引用则说明两者指向了同一个地方。
2 在PHP中error_reporting这个函数有什么作用?
答: 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 请用正则表达式(Regular Expression)写一个函数验证电子邮件的格式是否正确。
答:
if(isset($_POST[‘action’]) &&
$_POST[‘action’]==’submitted’)
{
$email=$_POST[’email’];
if(!preg_match(“/^(?:w+.?)*w+@(?:w+.?)*w+$/”,$email))
{
echo
“电子邮件检测失败”;
}
else
{
echo
“电子邮件检测成功”;
}
}
else
{
?>
” method=”POST”>
电子邮件: />
/>
/>
/>
}
?>
4 简述如何得到当前执行脚本路径,包括所得到参数。
echo
“http://”.$_SERVER[‘SERVER_NAME’].$_SERVER[‘PHP_SELF’].”?”.$_SERVER[‘QUERY_STRING’];
//echo “http://”.$_SERVER[‘HTTP_HOST’].$_SERVER[‘REQUEST_URI’];
?>
5 有一个一维数组,里面存储整形数据,请写一个函数,将他们按从大到小的顺序排列。要求执行效率高。并说明如何改善执行效率。(该函数必须自己实现,不能使用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);
var_dump($test);
?>
6 请举例说明在你的开发过程中用什么方法来加快页面的加载速度
答:要用到服务器资源时才打开,及时关闭服务器资源,数据库添加索引,页面可生成静态,图片等大文件单独服务器。使用代码优化工具啦
===============================================
填空题:
1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量__$_SERVER[‘PHP_SELF’]__中;而链接到当前页面的URL记录在预定义变量__$_SERVER[‘HTTP_REFERER’]__
中
2.执行程序段将输出__0__。
3.在HTTP 1.0中,状态码 401 的含义是____;如果返回“找不到文件”的提示,则可用 header 函数,其语句为____。
4.数组函数 arsort 的作用是__对数组进行逆向排序并保持索引关系__;语句 error_reporting(2047)的作用是__报告所有错误和警告__。
5.PEAR中的数据库连接字符串格式是____。
6.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把scrīpt标记及其内容都去掉):preg_replace(“/].*?>.*?/si”, “newinfo”, $script);
7.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句____动态装载PHP模块,然后再用语句____使得Apache把所有扩展名为php的文件都作为PHP脚本处理。
LoadModule php5_module “c:/php/php5apache2.dll” , AddType application/x-httpd-php .php,
8.语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是____;为了避免多次包含同一文件,可以用语句__require_once||include_once__来代替它们。
9.类的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函数是____。
10.一个函数的参数不能是对变量的引用,除非在php.ini中把__allow_call_time_pass_reference boolean__设为on.
11.SQL中LEFT JOIN的含义是__自然左外链接__。如果 tbl_user记录了学生的姓名(name)和学号(ID),tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)
和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句____。
12.在PHP中,heredoc是一种特殊的字符串,它的结束标志必须____。
编程题:
13.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。
答:
function my_scandir($dir)
{
$files = array();
if ( $handle = opendir($dir) ) {
while ( ($file = readdir($handle)) !== false ) {
if ( $file != “..” && $file != “.” ) {
if ( is_dir($dir . “/” . $file) ) {
$files[$file] = scandir($dir . “/” . $file);
}else {
$files[] = $file;
}
}
}
closedir($handle);
return $files;
}
}
14.简述论坛中无限分类的实现原理。
答:
/*
数据表结构如下:
CREATE TABLE `category` (
`categoryID` smallint(5) unsigned NOT NULL auto_increment,
`categoryParentID` smallint(5) unsigned NOT NULL default ’0′,
`categoryName` varchar(50) NOT NULL default ”,
PRIMARY KEY (`categoryID`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
INSERT INTO `category` ( `categoryParentID`, `categoryName`) VALUES
(0, ‘一级类别’),
(1, ‘二级类别’),
(1, ‘二级类别’),
(1, ‘二级类别’),
(2, ‘三级类别’),
(2, ’333332′),
(2, ’234234′),
(3, ‘aqqqqqd’),
(4, ‘哈哈’),
(5, ’66333666′);
*/
//指定分类id变量$category_id,然后返回该分类的所有子类
//$default_category为默认的选中的分类
function Get_Category($category_id = 0,$level = 0, $default_category = 0)
{
global $DB;
$sql = “SELECT * FROM category ORDER BY categoryID DESC”;
$result = $DB->query( $sql );
while ($rows = $DB->fetch_array($result))
{
$category_array[$rows[categoryParentID]][$rows[categoryID]] = array(‘id’ => $rows[categoryID], ‘parent’ => $rows[categoryParentID], ‘name’ => $rows
[categoryName]);
}
if (!isset($category_array[$category_id]))
{
return “”;
}
foreach($category_array[$category_id] AS $key => $category)
{
if ($category[‘id’] == $default_category)
{
echo “
”;
}
else
{
echo “>” . $category[‘name’] . “
”;
}
Get_Category($key, $level + 1, $default_category);
}
unset($category_array[$category_id]);
}
/*
函数返回的数组格式如下所示:
Array
(
[1] => Array ( [id] => 1 [name] => 一级类别 [level] => 0 [ParentID] => 0 )
[4] => Array ( [id] => 4 [name] => 二级类别 [level] => 1 [ParentID] => 1 )
[9] => Array ( [id] => 9 [name] => 哈哈 [level] => 2 [ParentID] => 4 )
[3] => Array ( [id] => 3 [name] => 二级类别 [level] => 1 [ParentID] => 1 )
[8] => Array ( [id] => 8 [name] => aqqqqqd [level] => 2 [ParentID] => 3 )
[2] => Array ( [id] => 2 [name] => 二级类别 [level] => 1 [ParentID] => 1 )
[7] => Array ( [id] => 7 [name] => 234234 [level] => 2 [ParentID] => 2 )
[6] => Array ( [id] => 6 [name] => 333332 [level] => 2 [ParentID] => 2 )
[5] => Array ( [id] => 5 [name] => 三级类别 [level] => 2 [ParentID] => 2 )
[10] => Array ( [id] => 10 [name] => 66333666 [level] => 3 [ParentID] => 5 )
)
*/
//指定分类id,然后返回数组
function Category_array($category_id = 0,$level=0)
{
global $DB;
$sql = “SELECT * FROM category ORDER BY categoryID DESC”;
$result = $DB->query($sql);
while ($rows = $DB->fetch_array($result))
{
$category_array[$rows[‘categoryParentID’]][$rows[‘categoryID’]] = $rows;
}
foreach ($category_array AS $key=>$val)
{
if ($key == $category_id)
{
foreach ($val AS $k=> $v)
{
$options[$k] =
array(
‘id’ => $v[‘categoryID’], ‘name’ => $v[‘categoryName’], ‘level’ => $level, ‘ParentID’=>$v[‘categoryParentID’]
);
$children = Category_array($k, $level+1);
if (count($children) > 0)
{
$options = $options + $children;
}
}
}
}
unset($category_array[$category_id]);
return $options;
}
?>
class cate
{
function Get_Category($category_id = 0,$level = 0, $default_category = 0)
{
echo $category_id;
$arr = array(
’0′ => array(
’1′ => array(‘id’ => 1, ‘parent’ => 0, ‘name’ => ’1111′),
’2′ => array(‘id’ => 2, ‘parent’ => 0, ‘name’ => ’2222′),
’4′ => array(‘id’ => 4, ‘parent’ => 0, ‘name’ => ’4444′)
),
’1′ => array(
’3′ => array(‘id’ => 3, ‘parent’ => 1, ‘name’ => ’333333′),
’5′ => array(‘id’ => 5, ‘parent’ => 1, ‘name’ => ’555555′)
),
’3′ => array(
’6′ => array(‘id’ => 6, ‘parent’ => 3, ‘name’ => ’66666′),
’7′ => array(‘id’ => 7, ‘parent’ => 3, ‘name’ => ’77777′)
),
’4′ => array(
’8′ => array(‘id’ => 8, ‘parent’ => 4, ‘name’ => ’8888′),
’9′ => array(‘id’ => 9, ‘parent’ => 4, ‘name’ => ’9999′)
)
);
if (!isset($arr[$category_id]))
{
return “”;
}
foreach($arr[$category_id] AS $key => $cate)
{
if ($cate[‘id’] == $default_category)
{
$txt = “
”;
}else{
$txt1 = “>” . $cate[‘name’] . “
”;
}
$val = $txt.$txt1;
echo $val;
self::Get_Category($key, $level + 1, $default_category);
}
}
function getFlush($category_id = 0,$level = 0, $default_category = 0)
{
ob_start();
self::Get_Category($category_id ,$level, $default_category);
$out = ob_get_contents();
ob_end_clean();
return $out;
}
}
$id =$_GET[‘id’];
echo “”; $c = new cate(); //$c->Get_Category(); $ttt= $c->getFlush($id,’0′,’3′); echo $ttt; echo “”;
?>
===============================================
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()
2. header()
3. location()
4. redirect()
2
14. What function can you use to open a file for reading and writing?
1. fget();
2. file_open();
3. fopen();
4. open_file();
3
15. What’s the difference between mysql_fetch_row() and mysql_fetch_array()?
mysql_fetch_row():返回根据所取得的行生成的数组,如果没有更多行则返回 FALSE。
mysql_fetch_array(): 是mysq_fetch_row()的扩展版本。除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,用字段名作为键名。
16. What does the following code do? Explain what’s going on there.
$date=’08/26/2003′;
print ereg_replace(‘([0-9]+)/([0-9]+)/([0-9]+)’,’2/1/3′,$date);
本函数以 正则 的规则来解析比对字符串 ,欲取而代之的字符串为’2/1/3′。
返回值为字符串类型,为取代后的字符串结果。
17. Given a line of text $string, how would you write a regular expression to strip all the HTML tags from it?
strip_tags
18. What’s the difference between the way PHP and Perl distinguish between arrays and hashes?
19. How can you get round the stateless nature of HTTP using PHP?
20. What does the GD library do?
21. Name a few ways to output (print) a block of HTML code in PHP?
22. Is PHP better than Perl? – Discuss.
如果成功则返回 TRUE,失败则返回 FALSE。