2025年php基础考试题及答案_第1页
2025年php基础考试题及答案_第2页
2025年php基础考试题及答案_第3页
2025年php基础考试题及答案_第4页
2025年php基础考试题及答案_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2025年php基础考试题及答案一、单项选择题(每题2分,共30分)1.以下PHP变量命名符合规范的是()A.$2userB.$_user_nameC.$user-nameD.$用户2.执行`echo(bool)0.0;`输出结果是()A.0B.1C.falseD.空字符串3.已知`$arr=[1,2=>3,4];`,`count($arr)`的返回值是()A.2B.3C.4D.54.以下能正确获取当前脚本绝对路径的超全局变量是()A.$_SERVER['PHP_SELF']B.$_ENV['SCRIPT_FILENAME']C.$_SERVER['SCRIPT_FILENAME']D.$_REQUEST['DOCUMENT_ROOT']5.执行`$str="hello";$str[0]='H';echo$str;`的输出是()A.helloB.HelloC.HlloD.报错6.关于PHP8.0新增的命名参数特性,以下描述错误的是()A.可以跳过可选参数B.必须按参数声明顺序传递C.与位置参数混合使用时需在位置参数之后D.提高代码可读性7.若`functiontest($a,$b=1){return$a+$b;}`,调用`test(b:2,3)`会()A.输出5B.输出3C.报错D.输出48.以下能正确创建关联数组的是()A.$arr=array("name"=>"张三",2=>"年龄");B.$arr=[1=>"a",0=>"b","key"];C.$arr=(array)"字符串";D.$arr={1:"a",2:"b"};9.执行`$x=5;$y=&$x;$y=$x+2;echo$x;`的结果是()A.5B.7C.2D.1010.关于`require`和`include`的区别,正确的是()A.require在错误时提供警告,include提供致命错误B.include可以在条件语句中使用,require不能C.require通常用于包含必须存在的文件D.include的效率高于require11.以下正则表达式能正确匹配中国手机号(11位,以13-19开头)的是()A./^1[3-9]\d{9}$/B./^1[3-9][0-9]{8}$/C./^1[2-9]\d{9}$/D./^1[3-9]{10}$/12.执行`echojson_encode(['name'=>'张三','age'=>null]);`的输出是()A.{"name":"张三","age":null}B.{"name":"张三","age":""}C.{"name":"张三"}D.报错13.以下关于魔术方法`__toString()`的描述正确的是()A.当对象被转换为字符串时自动调用B.可以返回任意类型的数据C.必须声明为privateD.PHP5.0以下版本默认存在14.若`classA{publicfunctiontest(){return1;}}classBextendsA{publicfunctiontest(){returnparent::test()+1;}}$obj=newB();echo$obj->test();`的输出是()A.1B.2C.3D.报错15.执行`$date=newDateTime('2025-02-29');`会()A.创建成功,日期为2025-02-28B.创建成功,日期为2025-03-01C.抛出异常D.静默转换为2025-02-28二、填空题(每空2分,共20分)1.PHP8.1引入的新特性中,允许类属性声明为`readonly`的关键字是______。2.输出`printf("%.2f",3.1415)`的结果是______。3.超全局变量______用于获取CLI模式下的命令行参数。4.数组函数______可以将二维数组转换为一维数组。5.若`$num="123abc";`,使用`intval($num)`转换结果为______。6.在PHP中,使用______关键字声明抽象类,使用______关键字声明接口。7.正则表达式中,`\d`表示匹配______,`\s`表示匹配______。8.执行`$a=1;$b=$a++;$c=++$a;`后,$b=______,$c=______。三、简答题(每题6分,共30分)1.简述PHP中`isset()`和`empty()`的区别,并各举一个应用场景。2.说明PHP8.0中`match`表达式与`switch`语句的主要差异(至少3点)。3.解释MVC模式中Model、View、Controller的职责划分,并说明在PHP框架(如Laravel)中的具体体现。4.列举PHP中处理文件上传的关键步骤(至少5步),并说明`$_FILES`数组各键名的含义。5.说明自动加载(Autoloading)机制的作用,以及PHP8.0支持的`__autoload()`函数与`spl_autoload_register()`的区别。四、代码分析题(每题8分,共24分)1.分析以下代码的输出结果,并说明原因:```phpfunctiontest(&$arr){$arr[]=4;$arr=[10,20];}$a=[1,2,3];test($a);echocount($a);```2.指出以下代码的错误并修正:```phpclassUser{private$name;publicfunction__construct(string$name){$this->name=$name;}}$user=newUser();echo$user->name;```3.分析以下代码的输出结果,并解释执行流程:```php$x=10;functionfoo(){global$x;$x+=5;static$y=0;$y++;return$y;}foo();echo$x.",";echofoo();```五、编程题(第1题10分,第2题16分,共26分)1.编写一个PHP函数`filterPhoneNumbers($numbers)`,要求:输入参数为字符串数组,每个元素是可能包含多个手机号的字符串(如15987654321")输出所有符合中国手机号规则(11位,13-19开头)的手机号,去重后按升序排列2.实现一个简单的用户登录验证功能(包含数据库交互),要求:使用PDO连接MySQL数据库(假设数据库名为`test`,用户`root`,密码`123456`)用户表`users`结构:id(int主键),username(varchar20),password(char32,MD5加密)功能:接收前端POST的`username`和`password`参数,验证是否存在该用户(需防止SQL注入)返回JSON格式结果:成功时`{"code":200,"msg":"登录成功"}`,失败时`{"code":401,"msg":"用户名或密码错误"}`答案一、单项选择题1.B2.A3.B4.C5.B6.B7.C8.A9.B10.C11.A12.A13.A14.B15.C二、填空题1.readonly2.3.143.$argv4.array_flatten(或自定义实现)5.1236.abstract;interface7.任意数字;任意空白字符8.1;3三、简答题1.`isset()`检查变量是否声明且不为null(返回布尔值),如判断`$_POST['username']`是否存在;`empty()`检查变量是否视为空(如0、空字符串、null等),如判断用户输入是否为空。区别:`isset(null)`返回false,`empty(null)`返回true;`empty(0)`返回true,`isset(0)`返回true。2.差异:①`match`是表达式(有返回值),`switch`是语句;②`match`严格类型匹配(===),`switch`宽松匹配(==);③`match`不需要`break`,执行完一个分支自动退出;④`match`支持返回值直接赋值,如`$result=match(...){...}`;⑤`match`的分支可以是任意表达式,而`switch`仅支持常量。3.Model:处理数据逻辑(如数据库操作),Laravel中对应Eloquent模型;View:负责数据展示(如模板文件),对应Blade视图;Controller:接收请求,调用Model获取数据,传递给View渲染,对应Laravel的控制器类(如UserController)。4.关键步骤:①检查`$_FILES`是否存在且无上传错误(`UPLOAD_ERR_OK`);②验证文件类型(`$_FILES['file']['type']`)和大小;③提供唯一文件名防止覆盖;④使用`move_uploaded_file()`移动临时文件到目标目录;⑤记录文件信息到数据库。`$_FILES`键名:`name`(原文件名)、`type`(MIME类型)、`tmp_name`(临时路径)、`error`(错误码)、`size`(文件大小)。5.作用:自动加载未声明的类文件,避免手动`require`。区别:`__autoload()`是全局函数,只能定义一个;`spl_autoload_register()`可注册多个自动加载函数,支持闭包和类方法,更灵活,是PHP推荐方式(`__autoload()`在PHP7.2已弃用)。四、代码分析题1.输出:2。原因:函数参数通过引用传递,`$arr[]=4`使原数组变为[1,2,3,4];但随后`$arr=[10,20]`将引用指向新数组,原变量`$a`现在指向新数组,其长度为2。2.错误:①构造函数需要`$name`参数,但实例化时未传递;②`$name`是private属性,无法直接访问。修正:```php$user=newUser("张三");//传递参数echo$user->name;//改为通过公共方法访问,如添加publicfunctiongetName(){return$this->name;}后调用$user->getName()```3.输出:15,2。流程:首次调用`foo()`,通过`global`访问全局`$x`,将其增加到15;静态变量`$y`初始化为0,自增后返回1(但未输出)。第二次调用`foo()`,`$x`已为15(再次增加5变为20,但未输出),`$y`保留上次值1,自增后返回2,最终输出15(第一次调用后的$x)和2(第二次调用返回的$y)。五、编程题1.参考实现:```phpfunctionfilterPhoneNumbers($numbers){$pattern='/1[3-9]\d{9}/';$result=[];foreach($numbersas$str){preg_match_all($pattern,$str,$matches);if(!empty($matches[0])){$result=array_merge($result,$matches[0]);}}$unique=array_unique($result);sort($unique);return$unique;}```2.参考实现:```phpheader('Content-Type:application/json');if($_SERVER['REQUEST_METHOD']!=='POST'){echojson_encode(['code'=>405,'msg'=>'请求方法错误']);exit;}$username=$_POST['username']??'';$password=$_POST['password']??'';if(empty($username)||empty($password)){echojson_encode(['code'=>400,'msg'=>'参数缺失']);exi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论