版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025年php基础知识期末试题及答案一、单项选择题(每题2分,共30分)1.以下关于PHP变量作用域的描述,正确的是()A.使用global声明的变量会创建新作用域B.static关键字声明的变量在函数调用结束后会被销毁C.类属性默认作用域为publicD.超全局变量只能在函数内部访问答案:C2.执行以下代码后,$a的值是()$a="123";$a.=45;$a+=6;A."123456"B.123456C.12351D.12345+6答案:C(解析:.=拼接后$a为"12345",转为数值12345,加6得12351)3.以下数组操作中,不会改变原数组的是()A.array_push($arr,1)B.$arr[]=1C.array_merge($arr1,$arr2)D.array_pop($arr)答案:C(array_merge返回新数组,原数组不变)4.关于PHP函数的描述,错误的是()A.函数参数可以设置默认值,但必须从右到左定义B.使用func_get_args()可以获取可变参数列表C.匿名函数不能访问父作用域变量D.自定义函数名不区分大小写答案:C(匿名函数可通过use关键字访问父作用域变量)5.以下哪项不是PHP支持的面向对象特性?()A.多继承B.抽象类C.接口D.魔术方法答案:A(PHP不支持多继承,通过接口实现类似功能)6.执行strpos("helloworld","o")的返回值是()A.4B.5C."4"D.false答案:A(字符串索引从0开始,第一个"o"在位置4)7.关于异常处理,以下代码的输出是()try{thrownewException("错误",100);}catch(Error$e){echo"Error:".$e->getMessage();}catch(Exception$e){echo"Exception:".$e->getCode();}A.Error:错误B.Exception:100C.无输出D.报错答案:B(Exception是Error的父类,先匹配Exception)8.以下文件操作函数中,用于读取整个文件内容并返回字符串的是()A.fread()B.file_get_contents()C.fgets()D.file()答案:B9.关于PHP框架(如Laravel)的基础概念,错误的是()A.路由定义通常在routes/web.php中B.模型(Model)负责数据逻辑C.视图(View)必须使用Blade模板引擎D.控制器(Controller)处理用户请求答案:C(Blade是默认模板引擎,但可替换)10.防止XSS攻击的主要方法是()A.使用预处理语句B.对用户输入进行转义(如htmlspecialchars)C.限制表单提交次数D.加密数据库密码答案:B11.以下哪项是PHP7引入的新特性?()A.类型声明(TypeDeclarations)B.匿名类(AnonymousClasses)C.提供器(Generators)D.命名空间(Namespaces)答案:B(PHP7引入匿名类,类型声明在PHP5.0+,提供器PHP5.5,命名空间PHP5.3)12.执行以下代码,输出结果是()$arr=[1,2,3];foreach($arras&$v){}foreach($arras$v){}echoimplode(',',$arr);A.1,2,3B.1,2,2C.1,1,1D.3,3,3答案:B(第一个foreach结束后$v引用最后一个元素3,第二个foreach循环中$v被赋值为1、2,导致原数组第三个元素变为2)13.以下关于session的描述,正确的是()A.session数据默认存储在客户端B.session_start()必须在输出任何内容之前调用C.session_id()只能获取当前session的ID,不能设置D.关闭浏览器后session会立即失效答案:B14.正则表达式/^[a-z]+\d{3}$/可以匹配以下哪个字符串?()A."test123"B."Test123"C."a1"D."abc1234"答案:A(小写字母+至少1位+3位数字)15.关于PDO预处理语句,正确的使用方式是()A.$stmt=$pdo->query("SELECTFROMuserWHEREid=:id");B.$stmt->bindParam(':id',$id,PDO::PARAM_INT);C.$stmt->execute([$id]);D.$result=$stmt->fetch(PDO::FETCH_ARRAY);答案:B(A应为prepare,C参数需对应命名占位符,D正确但B是预处理关键步骤)二、填空题(每空1分,共10分)1.PHP中单行注释的符号是________和________。答案://,2.声明PHP变量必须以________符号开头。答案:$3.用于获取客户端IP地址的超全局变量是________。答案:$_SERVER['REMOTE_ADDR']4.PHP7+中用于自动加载类的函数是________。答案:spl_autoload_register()5.类中用于构造对象的魔术方法是________。答案:__construct()6.正则表达式中匹配任意非数字字符的元字符是________。答案:\D7.启动session的函数是________。答案:session_start()8.PDO连接MySQL时,DSN的格式为________。答案:mysql:host=主机名;dbname=数据库名9.匿名函数中使用父作用域变量需要通过________关键字。答案:use10.MVC模式中,C代表________。答案:Controller(控制器)三、简答题(每题6分,共30分)1.简述PHP的执行流程(从请求到响应)。答案:用户发起HTTP请求→Web服务器(如Apache/Nginx)接收请求→根据配置将.php文件转发给PHP解析器(如FastCGI)→PHP解析器加载文件,编译为ZendOPcode→执行代码(可能涉及数据库操作、文件读写等)→提供HTML/JSON等响应内容→返回给Web服务器→最终发送到客户端浏览器。2.说明引用传递(&)与值传递的区别,并举例。答案:值传递是将变量的副本传递给函数/变量,修改副本不影响原变量;引用传递传递变量的内存地址,修改副本会影响原变量。例如://值传递$a=1;functiontest($b){$b++;}test($a);//$a仍为1//引用传递$a=1;functiontest(&$b){$b++;}test($a);//$a变为23.抽象类与接口的区别(至少列出3点)。答案:①抽象类可包含具体方法和抽象方法,接口只能包含抽象方法(PHP8+支持默认方法);②类只能继承1个抽象类,但可实现多个接口;③抽象类的抽象方法需定义访问修饰符,接口方法默认public;④抽象类可包含成员变量,接口只能定义常量。4.列举至少3种防范SQL注入的方法。答案:①使用PDO或mysqli的预处理语句(PreparedStatements);②对用户输入进行严格的类型校验和过滤(如只允许数字时用is_numeric());③避免拼接SQL字符串,使用参数绑定;④限制数据库用户权限(如仅允许查询);⑤使用ORM框架(如Eloquent)自动处理转义。5.说明MVC模式的优势。答案:①职责分离:模型(数据)、视图(展示)、控制器(逻辑)独立,便于维护和协作开发;②代码复用:视图可被多个控制器调用,模型可被多个控制器操作;③可测试性:控制器和模型可单独测试,无需依赖视图;④扩展性:新增功能只需修改对应模块,降低耦合。四、代码分析题(每题6分,共30分)1.分析以下代码的输出结果,并说明原因。functiontest(){static$count=0;$count++;echo$count;}test();//输出?test();//输出?答案:第一次输出1,第二次输出2。static声明的变量在函数调用结束后保留值,下次调用时使用上次的值继续运算。2.执行以下代码,输出什么?说明数组操作的逻辑。$arr=[1,2,3];$arr2=$arr;$arr2[]=4;$arr3=&$arr;$arr3[]=5;echocount($arr).','.count($arr2).','.count($arr3);答案:输出3,4,3?不,实际是:$arr2是$arr的副本,添加4后$arr2长度4;$arr3是$arr的引用,添加5后$arr长度变为4,$arr3长度也为4。最终输出4,4,4。(修正:原$arr初始长度3,$arr2=$arr后,$arr2修改不影响$arr;$arr3=&$arr后,$arr3[]=5等价于$arr[]=5,此时$arr长度变为4,$arr3长度也是4。因此输出4,4,4。)3.分析以下字符串处理代码的输出。$str="hello";echostrtoupper(substr($str,0,2)).substr($str,2);答案:输出"HEllo"。substr($str,0,2)取前2字符"he",strtoupper转为"HE";substr($str,2)取从第2位(索引2)开始的子串"llo",拼接后为"HEllo"。4.以下面向对象代码的输出是什么?说明继承与方法重写的规则。classA{publicfunctionshow(){echo"A";}}classBextendsA{publicfunctionshow(){parent::show();echo"B";}}$obj=newB();$obj->show();答案:输出"AB"。B类重写了A类的show()方法,通过parent::show()调用父类的show()方法,先输出"A",再输出"B"。5.分析以下异常处理代码的输出。try{echo"1";thrownewException("错误");echo"2";}catch(Exception$e){echo"3";}finally{echo"4";}echo"5";答案:输出"1345"。执行try块时先输出1,抛出异常后跳过echo"2",进入catch块输出3,finally块无论是否异常都会执行输出4,最后执行外部echo"5"。五、编程题(每题8分,共40分)1.编写一个函数,实现用户登录验证功能。要求:接收用户名和密码参数,查询数据库(假设已建立PDO连接$pdo),验证密码是否匹配(密码已使用password_hash()存储),若成功则将用户信息存入session,返回true;否则返回false。答案:functionlogin($username,$password){global$pdo;//假设$pdo是全局PDO连接$stmt=$pdo->prepare("SELECTFROMusersWHEREusername=:username");$stmt->execute([':username'=>$username]);$user=$stmt->fetch(PDO::FETCH_ASSOC);if(!$user)returnfalse;if(password_verify($password,$user['password'])){$_SESSION['user']=['id'=>$user['id'],'username'=>$user['username']];returntrue;}returnfalse;}2.给定一个一维数组表示商品分类(如[['id'=>1,'name'=>'手机','pid'=>0],['id'=>2,'name'=>'苹果','pid'=>1],...]),编写函数提供树形结构(子分类包含在父分类的children数组中)。答案:functionbuildCategoryTree($categories,$parentId=0){$tree=[];foreach($categoriesas$cat){if($cat['pid']==$parentId){$children=buildCategoryTree($categories,$cat['id']);if($children){$cat['children']=$children;}$tree[]=$cat;}}return$tree;}3.设计一个日志类(Logger),要求支持写入文件(路径可配置),记录时间、日志级别(info/warn/error)和消息,格式为“[时间][级别]消息”。答案:classLogger{private$logPath;publicfunction__construct($logPath){$this->logPath=$logPath;}publicfunctionlog($level,$message){$time=date('Y-m-dH:i:s');$logLine="[$time][$level]$message\n";file_put_contents($this->logPath,$logLine,FILE_APPEND);}publicfunctioninfo($message){$this->log('info',$message);}publicfunctionwarn($message){$this->log('warn',$message);}publicfunctionerror($message){$this->log('error',$message);}}4.编写代码计算购物车中商品的总价格,要求:处理商品数组(如[['price'=>100,'num'=>2],['price'=>50,'num'=>3]]),考虑以下优惠:满300减50,满200减20,不累加(取最大优惠)。答案:$cart=[['price'=>100,'num'=>2],['price'=>50,'num'=>3]];$total=0;foreach($cartas$item){$total+=$item['
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公开课鲁教初中语文九上落叶教案
- 部编版五年级语文上册习作缩写故事公开课教案
- 小班数学活动玩具分类教案
- 语言识字活动住房子大班公开课教案(2025-2026学年)
- 环网柜及电缆分支箱施工方法完整版试卷教案
- 福建省基桩高应变年说课材料教案
- 部门职能岗位说明书教案(2025-2026学年)
- 神经康复护理教案
- 高中生物实验中DNA序列分析技术整合与物种进化关系探究课题报告教学研究课题报告
- 方向路线公开课教案
- 抢劫案件侦查课件
- 2025中国企业软件出海报告
- 2025年大学《农药化肥-农药残留检测》考试模拟试题及答案解析
- 二氧化碳爆破施工技术方案
- 安全生产工作成效总结
- 16《我的叔叔于勒》公开课一等奖创新教学设计
- 农资超市开业筹备与运营实施方案
- 药店代煎免责协议书10篇
- 大语言模型金融领域应用评测指南
- 产后恶露护理
- 基础胶水知识培训课件
评论
0/150
提交评论