2021年php面试题和答案
php数据结构面试题及答案(3篇)

第1篇一、选择题1. 问题:在PHP中,以下哪个数据结构允许你以任意顺序存储元素?- A. 数组- B. 队列- C. 栈- D. 链表答案:A. 数组解析:在PHP中,数组是一种非常灵活的数据结构,它允许你以任意顺序存储元素。
每个元素可以通过一个键来访问,这个键可以是数字或者字符串。
2. 问题:以下哪个函数可以用来检查一个PHP数组是否为关联数组?- A. is_array()- B. array_keys()- C. is_associative()- D. array_is_associative()答案:D. array_is_associative()解析:PHP 7.1.0引入了`array_is_associative()`函数,该函数可以用来检查一个数组是否为关联数组。
如果是关联数组,返回`true`;如果是索引数组,返回`false`。
3. 问题:以下哪个PHP函数可以用来检查一个值是否在数组中?- A. in_array()- B. array_key_exists()- C. isset()- D. array_search()答案:A. in_array()解析:`in_array()`函数用来检查一个值是否存在于数组中。
它接受两个参数:要查找的值和要检查的数组。
二、填空题1. 问题:在PHP中,使用`[]`可以创建一个______数组。
- 答案:索引数组2. 问题:在PHP中,使用`array()`函数可以创建一个______数组。
- 答案:关联数组3. 问题:在PHP中,要遍历一个关联数组,可以使用______循环。
- 答案:foreach三、简答题1. 问题:解释PHP中的`isset()`和`empty()`函数的区别。
答案:- `isset()`函数用于检查一个变量是否已经设置并且不为`null`。
如果变量已设置且不为`null`,则`isset()`返回`true`。
后端开发php面试题目(3篇)

第1篇一、PHP基础1. 以下哪个是PHP的官方解释器?(2分)A. HHVMB. Zend EngineC. Microsoft IISD. Apache答案:B. Zend Engine2. PHP的变量命名规则是什么?(2分)A. 必须以字母、数字或下划线开头,后面可以跟字母、数字、下划线B. 必须以字母或下划线开头,后面可以跟字母、数字、下划线C. 必须以字母开头,后面可以跟字母、数字、下划线D. 可以以数字开头,后面可以跟字母、数字、下划线答案:B. 必须以字母或下划线开头,后面可以跟字母、数字、下划线3. 如何在PHP中声明一个数组?(2分)A. $array = array();B. $array = new Array();C. $array = [];D. $array = array()答案:A. $array = array();4. 以下哪个是PHP的内置数据类型?(2分)A. ObjectB. ArrayC. StringD. All of the above答案:D. All of the above5. 如何在PHP中实现一个简单的数据库连接?(2分)A. 使用mysqli_connect()B. 使用PDOC. 使用MySQLiD. 以上都是答案:D. 以上都是二、面向对象编程(OOP)1. 什么是面向对象编程?(2分)A. 一种编程范式,将数据和行为封装在对象中B. 一种编程范式,将数据和行为封装在函数中C. 一种编程范式,将数据和行为封装在变量中D. 一种编程范式,将数据和行为封装在类中答案:A. 一种编程范式,将数据和行为封装在对象中2. PHP中如何声明一个类?(2分)A. use class;B. class MyClass;C. class MyClass();D. class MyClass{}答案:B. class MyClass;3. 在PHP中,如何实现类的继承?(2分)A. 使用extends关键字B. 使用extend关键字C. 使用inherit关键字D. 使用inherits关键字答案:A. 使用extends关键字4. 什么是封装?请举例说明。
php面试题目带答案(3篇)

第1篇一、基础题1. 问题:请解释PHP中`$_SERVER`的作用。
答案:`$_SERVER`是一个全局数组,它包含了头信息、路径和脚本位置等信息。
通过这个数组,我们可以获取到诸如服务器的名称、执行脚本的路径、HTTP请求头等信息。
2. 问题:简述PHP中的魔术引用(`&`)的作用。
答案:魔术引用在PHP中用于引用传递。
当使用`&$variable`时,实际上传递的是变量的引用,而不是值。
这在函数内部修改变量时非常有用,因为它允许函数内部直接修改外部传入的变量。
3. 问题:请解释PHP中的`include`和`require`的区别。
答案:`include`和`require`都是用于包含其他PHP文件的工具,但它们在错误处理上有区别。
`require`如果找不到文件,会抛出一个致命错误并终止脚本执行;而`include`则会输出一条警告信息,但不会终止脚本执行。
4. 问题:如何使用PHP获取当前的时间戳?答案:可以使用`time()`函数获取当前的时间戳,该函数返回自1970年1月1日00:00:00 UTC以来的秒数。
5. 问题:简述PHP中的数据类型。
答案:PHP有八种数据类型,包括整型(int)、浮点型(float)、字符串(string)、布尔型(bool)、对象(object)、资源(resource)、数组(array)和NULL。
二、进阶题1. 问题:请解释PHP中的`session`和`cookie`的区别。
答案:- `session`存储在服务器端,通过会话ID来识别不同的用户,安全性较高。
- `cookie`存储在客户端,通常用于存储用户偏好设置或其他小量数据,安全性相对较低。
2. 问题:如何使用PHP进行文件上传?答案:- 首先,需要设置`php.ini`文件中的`file_uploads`和`upload_max_filesize`参数。
- 在HTML表单中,使用`enctype="multipart/form-data"`属性。
php面试题及答案100道(3篇)

第1篇PHP基础知识1. 什么是PHP?- PHP是一种开源的、服务器端的脚本语言,主要用于网页开发。
2. PHP有哪些优点?- 灵活性高、易于学习、开源免费、广泛的社区支持。
3. PHP的运行环境有哪些?- Apache、Nginx、IIS等服务器软件。
4. PHP的版本有哪些?- PHP 5.x、PHP 7.x、PHP 8.x。
5. 如何检查PHP版本?- 使用`phpinfo()`函数或者在PHP文件中添加`echo phpversion();`。
6. 什么是PHP的超全局变量?- `$GLOBALS`、`$_SERVER`、`$_GET`、`$_POST`、`$_FILES`等。
7. 如何设置PHP的默认编码?- 在PHP配置文件(php.ini)中设置`default_charset`。
8. 什么是PHP的数据类型?- 整数、浮点数、字符串、布尔值、数组、对象、资源、NULL。
9. 如何定义一个PHP变量?- 使用$符号后跟变量名。
10. 什么是变量作用域?- 全局作用域、局部作用域、静态作用域。
基本语法11. 如何注释PHP代码?- 单行注释:`//`- 多行注释:`/ /`12. 如何比较两个字符串?- 使用`==`或`===`。
13. 如何遍历数组?- 使用`foreach`循环。
14. 如何定义一个函数?- 使用`function`关键字。
15. 如何调用一个函数?- 使用函数名后跟括号。
16. 如何传递参数给函数?- 在函数定义时列出参数,调用时传递值。
17. 如何定义一个类?- 使用`class`关键字。
18. 如何创建一个对象?- 使用`new`关键字。
19. 如何访问对象属性和方法?- 使用`$object->property`和`$object->method();`。
20. 什么是魔术方法?- PHP中的特殊方法,如`__construct()`、`__destruct()`、`__get()`等。
php面试题试题及答案(3篇)

第1篇一、基础语法与变量1. 问题:PHP中的变量命名规则是什么?答案:PHP中的变量命名规则如下:- 变量名必须以字母或下划线开头。
- 变量名可以包含字母、数字和下划线。
- 变量名是区分大小写的。
- 变量名不能包含空格或点。
2. 问题:如何声明一个PHP变量?答案:在PHP中,可以使用以下方式声明一个变量:```php$variable = "Hello, World!";```或者简写为:```php$variable = "Hello, World!";```3. 问题:PHP中的变量类型有哪些?答案:PHP中的变量类型包括:- 整数(Integer)- 浮点数(Float)- 字符串(String)- 布尔值(Boolean)- 数组(Array)- 对象(Object)- 资源(Resource)- NULL4. 问题:如何检查一个变量的类型?答案:可以使用`gettype()`函数来检查一个变量的类型:```php$var = 10;echo gettype($var); // 输出:integer```二、数据类型转换1. 问题:如何在PHP中进行数据类型转换?答案:在PHP中,可以使用以下方式进行数据类型转换:- 使用类型转换运算符(例如:(int) $var, (float) $var, (string) $var)- 使用`settype()`函数- 使用类型强制转换运算符(例如:$var = (int) $var;)2. 问题:如何将字符串转换为整数?答案:可以使用类型转换运算符或`settype()`函数:```php$string = "123";$int = (int) $string; // 或者 $int = settype($string, "integer"); ```3. 问题:如何将整数转换为字符串?答案:可以使用类型转换运算符:```php$int = 123;$string = (string) $int;```三、条件语句与循环1. 问题:PHP中的条件语句有哪些?答案:PHP中的条件语句包括:- `if`语句- `if...else`语句- `switch`语句2. 问题:如何使用`if`语句?答案:```phpif (条件) {// 条件为真时执行的代码} else {// 条件为假时执行的代码}```3. 问题:如何使用`switch`语句?答案:```phpswitch ($expression) {case 值1:// 当表达式与值1匹配时执行的代码 break;case 值2:// 当表达式与值2匹配时执行的代码 break;default:// 默认情况下执行的代码}```4. 问题:PHP中的循环有哪些?答案:PHP中的循环包括:- `for`循环- `while`循环- `do...while`循环- `foreach`循环5. 问题:如何使用`for`循环?答案:```phpfor (初始化表达式; 条件表达式; 更新表达式) { // 循环体}```四、函数与面向对象编程1. 问题:如何在PHP中定义一个函数?答案:```phpfunction 函数名(参数列表) {// 函数体}```2. 问题:如何调用一个函数?答案:```php函数名(参数列表);```3. 问题:PHP中的函数有哪些返回值?答案:PHP中的函数可以返回以下类型的值:- 字符串(String)- 整数(Integer)- 浮点数(Float)- 布尔值(Boolean)- 数组(Array)- 对象(Object)- 资源(Resource)- NULL4. 问题:如何在PHP中定义一个类?答案:```phpclass 类名 {// 类属性和方法}```5. 问题:如何在PHP中使用构造函数和析构函数?答案:构造函数用于在创建对象时初始化对象,析构函数用于在对象销毁时执行清理工作。
php面试题大全(3篇)

第1篇一、PHP基础1. PHP的全称是什么?- 答案: PHP的全称是PHP: Hypertext Preprocessor。
2. PHP中变量是如何声明的?- 答案:在PHP中,变量以美元符号 `$` 开头,后跟变量名。
3. PHP支持哪些数据类型?- 答案: PHP支持多种数据类型,包括字符串、整数、浮点数、布尔值、数组、对象、NULL 以及资源。
4. 如何连接MySQL数据库?- 答案:可以使用mysqli或PDO扩展来连接MySQL数据库。
5. 如何在PHP中定义和调用函数?- 答案:使用 `function` 关键字定义函数,调用时直接使用函数名。
6. PHP中的会话是如何工作的?- 答案:会话用于在多个页面请求之间存储用户信息。
可以使用`session_start()` 函数启动会话,并使用 `$_SESSION` 超全局变量存取会话数据。
7. `include` 和 `require` 的区别是什么?- 答案: `include` 在文件无法找到时会生成一个警告并继续执行,而`require` 会生成一个致命错误并停止脚本执行。
8. 如何处理PHP中的错误和异常?- 答案:可以使用 `try-catch` 块来处理错误和异常。
9. 如何获取和处理表单数据?- 答案:可以使用 `GET` 或 `POST` 超全局数组来获取和处理表单数据。
二、安全与性能10. 如何防止CSRF攻击?- 答案:通过生成CSRF令牌并与表单提交时验证该令牌来防止CSRF攻击。
11. 如何防止XSS攻击?- 答案:对用户输入进行转义,使用 `htmlspecialchars` 或`htmlentities` 函数。
12. 如何提高PHP代码的性能?- 答案:通过优化代码、使用缓存、减少数据库查询次数、使用静态变量等方法提高性能。
13. 如何实现代码复用?- 答案:通过封装成函数、类或使用MVC模式来提高代码复用。
php基础面试题附答案(3篇)

第1篇1. 介绍PHP的基本特点和应用场景问题:PHP是一种什么类型的编程语言?它有哪些主要特点和应用场景?答案:PHP是一种开源的、服务器端脚本语言,主要特点包括:- 跨平台:PHP可以运行在多种操作系统上,如Windows、Linux、Mac OS等。
- 嵌入HTML:PHP可以与HTML、JavaScript、CSS等网页设计语言混合使用。
- 简单易学:PHP语法简洁,易于学习和使用。
- 强大的数据库支持:PHP与MySQL、Oracle、SQLite等多种数据库系统兼容良好。
- 开源免费:PHP是免费的,且具有丰富的社区支持。
PHP的主要应用场景包括:- 网站开发:PHP常用于开发动态网站,如电子商务、社交网络、内容管理系统等。
- 企业级应用:PHP可以用于开发企业级应用,如ERP、CRM等。
- 云服务:PHP可以与云计算平台集成,用于开发云服务。
2. 解释PHP的变量类型问题:PHP中有哪些变量类型?请举例说明。
答案:PHP中有以下几种变量类型:- 整型(Integer):用于存储整数,如`$age = 25;`- 浮点型(Float):用于存储小数,如`$pi = 3.14;`- 字符串(String):用于存储文本,如`$name = "张三";`- 布尔型(Boolean):用于存储真(true)或假(false),如`$isLogin = true;`- 数组(Array):用于存储多个值,如`$colors = ["red", "green", "blue"];`- 对象(Object):用于存储类实例,如`$user = new User();`- 资源(Resource):用于存储数据库连接、文件句柄等,如`$handle =fopen("file.txt", "r");`3. 比较require和include的区别问题:require和include有什么区别?答案:require和include都是用于引入外部文件,但它们之间有一些区别:- require:如果引入的文件不存在,会抛出致命错误并停止脚本执行。
php大厂面试题答案(3篇)

第1篇一、单选题1. PHP执行的时候有如下执行过程:Scanning(Lexing) - Compilation - Execution - Parsing,其含义分别为:A、将PHP代码转换为语言片段(Tokens)、将Tokens转换成简单而有意义的表达式、顺次执行Opcodes、将表达式编译成OpocdesB、将PHP代码转换为语言片段(Tokens)、将表达式编译成Opocdes、顺次执行Opcodes、将Tokens转换成简单而有意义的表达式C、将PHP代码转换为语言片段(Tokens)、将Tokens转换成简单而有意义的表达式、将表达式编译成Opocdes、顺次执行OpcodesD、将PHP代码转换为语言片段(Tokens)、将表达式编译成Opocdes、将Tokens转换成简单而有意义的表达式、顺次执行Opcodes答案:C解析:Scanning(词法分析)将PHP代码转换为语言片段(Tokens),Compilation(编译)将Tokens转换成简单而有意义的表达式,Parsing(解析)将表达式编译成Opocdes,Execution(执行)顺次执行Opcodes。
2. 以下哪个函数可以获取当前执行脚本的时间戳?A. time()B. microtime()C. mktime()D. date()答案:B解析:microtime()函数可以获取当前执行脚本的时间戳,格式为字符串。
3. 以下哪个函数可以检查一个变量是否为NULL?A. isset()B. empty()C. is_null()D. null()答案:C解析:is_null()函数可以检查一个变量是否为NULL。
4. 以下哪个函数可以将字符串转换为整数?A. strval()B. intval()C. doubleval()D. boolval()答案:B解析:intval()函数可以将字符串转换为整数。
5. 以下哪个函数可以将数组转换为关联数组?A. array_combine()B. array_fill()C. array_map()D. array_merge()答案:A解析:array_combine()函数可以将数组转换为关联数组。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、用PHP打印出前一天时间格式是-5-10 22:21:21(2分) $a = date("Y-m-d H:i:s",strtotime("-1 day"));print_r($a);2、echo(),print(),print_r()区别(3分)echo 和print不是一种函数,是一种语言构造int print(string $arg),只有一种参数echo arg1,arg2;可以输出各种参数,返回voidecho和print只能打印出string,不能打印出构造print_r能打印出构造例如$arr = array("key"=>"value");print_r($arr);3、可以使HTML和PHP分离开使用模板(1分)smarty,phplib4、使用哪些工具进行版本控制?(1分)svn,git,cvs5、如何实现字符串翻转?(3分)英文:strrev($a)中文或其她文字:中文:GB2312,代码是使用GB2312编码<?phpfunction reverse($str){$ret = "";len=mbstrwidth(str,"GB2312");for(i=0;i< len;i++){arr[]=mbsubstr(str,$i,1,"GB2312");}return implode("",array_reverse($arr));}print_r(reverse("你好"));---------------------------------------------------------------6、优化MYSQL数据库办法。
(4分,多写多得)语句方面:1 使用索引,增长查询效率2 优化查询语句,提高索引命中率数据库涉及方面:1 构造分库分表,提高数据库存储和扩展能力2 依照需要使用不同存储引擎7、PHP意思(送1分)超级文本预解决语言Hypertext PreProcessor8、MYSQL获得当前时间函数是?,格式化日期函数是(2分)CURRENT_TIMESTAMP()DATE_FORMAT()select DATE_FORMAT("-11-21 10:10:10","%Y-%m-%d");9、实现中文字串截取无乱码办法。
(3分)mb_substr($str,1,1,"GB2312");---------------------------------------------------------------10、您与否用过版本控制软件?如果有您用版本控制软件名字是?(1分) svngit11、您与否用过模板引擎?如果有您用模板引擎名字是?(1分)smarty12、请简朴阐述您最得意开发之作(4分)XXX13、对于大流量网站,您采用什么样办法来解决访问量问题?(4分)1 有效使用缓存,增长缓存命中率2 使用负载均衡3 对静态文献使用CDN进行存储和加速4 想法减少数据库使用5 查看浮现记录瓶颈在哪里-----------------------------------------------------------------14、用PHP写出显示客户端IP与服务器IP代码1分)$_SERVER["REMOTE_ADDR"]$_SERVER["SERVER_ADDR"]15、语句include和require区别是什么?为避免多次包括同一文献,可用(?)语句代替它们?(2分)在失败时候:include产生一种warning,而require产生直接产生错误中断require在运营前载入include在运营时载入require_onceinclude_once16、如何修改SESSION生存时间(1分).session_set_cookie_params17、有一种网页地址,例如PHP研究室主页:,如何得到它内容?($1分) file_get_contentscurl18、在HTTP 1.0中,状态码401含义是(?);如果返回“找不到文献”提示,则可用 header 函数,其语句为(?);(2分)未授权header("HTTP/1.0 404 Not Found");fast CGI中:header("Status:404 Not Found");19、在PHP中,heredoc是一种特殊字符串,它结束标志必要?(1分)成对浮现$a = <<EODgood testEOD;20、谈谈asp,php,jsp优缺陷(1分)asp是需要依赖IIS,是微软开发语言php和jsp可以依赖apache或者 nginx等其她服务器21、谈谈对mvc结识(1分)model :数据构造层view :呈现control :接受和判断解决输入-------------------------------------------------------------------22、写出发贴数最多十个人名字SQL,运用下表:members(id,username,posts,pass,email)(2分)select top 10 id,username from members order by posts desc23. 请阐明php中传值与传引用区别。
什么时候传值什么时候传引用?(2分) &表达传引用函数中参数传引用会将参数进行变化普通在输出参数有各种时候可以考虑使用引用24. 在PHP中error_reporting这个函数有什么作用?(1分)设定error展示级别25. 请写一种函数验证电子邮件格式与否对的 (2分)$str = "";regex="([a−z0−9\.−]+)@([\da−z\.−]+)\.([a−z\.]2,6)" ;//正则return preg_match(regex,str)26. 简述如何得到当前执行脚本途径,涉及所得到参数。
(2分)$argc --获取参数数量$argv --获取参数列表27.如何修改SESSION生存时间. (1分)session_set_cookie_params--------------------------------------------------------------------28、JS表单弹出对话框函数是?获得输入焦点函数是?(2分)alert()confirm()promopt()focus()29、JS转向函数是?怎么引入一种外部JS文献?(2分)window.location.href="#"<script src="#"></script>30、foo()和@foo()之间有什么区别?(1分)@代表所有warning忽视31、如何声明一种名为”myclass”没有办法和属性类?(1分)class myclass{}32、如何实例化一种名为”myclass”对象?(1分)$myclass = new myclass();33、你如何访问和设立一种类属性?(2分)<?phpclass A{public $name = "A";}$a = new A();n=a->name;print_r($n);34、mysql_fetch_row() 和mysql_fetch_array之间有什么区别?(1分) mysql_fetch_array() 是 mysql_fetch_row() 扩展版本。
除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,用字段名作为键名。
<?phpmysql_connect("localhost","mysql_user","mysql_password") ordie("Could not connect:" . mysql_error());mysql_select_db("mydb");$result = mysql_query("SELECT id,name FROM mytable");while (row=mysqlfetcharray(result,MYSQL_ASSOC)) {printf ("ID:%s Name:%s",row["id"],row["name"]);}mysql_free_result($result);--------------------------------------------------------------------35、GD库是做什么用?(1分)动态开放图片解决库36、指出某些在PHP输入一段HTML代码办法。
(1分)echo "{html}"echo <<EOD{html}EOD;37、下面哪个函数可以打开一种文献,以对文献进行读和写操作?(1分) c(a) fget() (b) file_open() (c) fopen() (d) open_file()38、下面哪个选项没有将 john 添加到users 数组中?(1分) b(a) $users[] = ‘john’;(b) array_add($users,’john’);(c) array_push($users,‘john’);(d) $users ||= ‘john’;39、下面程序会输入与否?(1分) 10$num = 10;function multiply(){num=num * 10;}multiply();echo $num;?>40、使用php写一段简朴查询,查出所有姓名为“张三”内容并打印出来 (2分)表名UserName Tel Content Date张三大专毕业 -10-11张三本科毕业 -10-15张四中专毕业 -10-15请依照上面题目完毕代码:$mysql_db=mysql_connect("local","root","pass");@mysql_select_db("DB",$mysql_db);$sql = sprintf("select * from %s where UserName = '%s'","表名","张三");values=mysqlquery(sql);while(item=mysqlfetchqueryarray(values)){echo sprintf("顾客名:%s,电话 %s,学历: %s,毕业日期: %s",item[′UserName′],item['Tel'],item[′Content′],item['Date']);}41、如何使用下面类,并解释下面什么意思?(3)class test{function Get_test($num){num=md5(md5(num)."En");return $num;}}$test = new test();ret=test->Get_test(11);print_r($ret);exit;将num进行MD5编码之后生成32位字符串a1和"En"联系起来之后再进行一次MD5编码----------------------------------------------------------------------------42、写出 SQL语句格式:插入,更新,删除 (4分)表名UserName Tel Content Date张三大专毕业 -10-11张三本科毕业 -10-15张四中专毕业 -10-15(a) 有一新记录(小王高中毕业 -05-06)请用SQL语句新增至表中insert into 表名 values('小王','','高中毕业','-05-06')(b) 请用sql语句把张三时间更新成为当前系统时间update 表名 set Date = GETDATE() where UserName = "张三"(c) 请写出删除名为张四所有记录delete from 表白 where UserName = "张四"43、请写出数据类型(int char varchar datetime text)意思;请问varchar 和char有什么区别(2分)int 整型char 存储定长varchar 存储变长datetime 时间text 存储变长varchar是变长char(20) 定长44、MySQ自增类型(普通为表ID字段)必须将其设为(?)字段(1分)auto_increment45、写出如下程序输出成果 (1分)$b=201;$c=40;a=b>$c?4:5;echo $a;?>446、检测一种变量与否有设立函数与否?与否为空函数是?(2分)isset()empty()-----------------------------------------------------------------------------47、获得查询成果集总数函数是?(1分)mysql_num_rows()48、$arr = array('james','tom','symfony');请打印出第一种元素值 (1分)print_r($arr[0]);reset($arr);print_r(current($arr));print_r(array_shift($arr));49、请将41题数组值用','号分隔并合并成字串输出(1分) implode50、a=′abcdef′;请取出a值并打印出第一种字母(1分) $a[0];substr($a,0,1);51、PHP可以和sql server/oracle等数据库连接吗?(1分) 可以有现成库52、请写出PHP5权限控制修饰符(3分)publicprivateprotected53、请写出php5构造函数和析构函数(2分)public function __construct(){}public function __destruct(){}编程题1. 写一种函数,尽量高效,从一种原则 url 里取出文献扩展名例如:<?php$url = "";arr=parseurl(url);pathArr=pathinfo(arr['path']);print_r($pathArr['extension']);3. 写一种函数,算出两个文献相对途径如 $a = '/a/b/c/d/e.php';$b = '/a/b/12/34/c.php';计算出 b相对于a 相对途径应当是<?php$a = '/a/b/c/d/e.php';$b = '/a/b/12/34/c.php';//获取path相对于conpath相对途径function sGetRelativePath(path,conpath){pathArr=explode("/",path);conpathArr=explode("/",conpath);$dismatchlen = 0;for(i=0;i < count(pathArr);i++){if(conpathArr[i] != pathArr[i]){dismatchlen=count(pathArr) - $i;arrLeft=arrayslice(pathArr,$i);break;}}ret=strrepeat("../",dismatchlen).implode("/",$arrLeft);return $ret;}print_r(sGetRelativePath(b,a));3.写一种函数,可以遍历一种文献夹下所有文献和子文献夹。