版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PHP函数面试题及详细答案(企业真实面试专用)本套面试题聚焦PHP开发岗位高频函数考点,覆盖基础语法、变量作用域、参数机制、常用系统函数、自定义函数、闭包、递归、函数漏洞等核心内容,适配初级、中级PHP工程师面试场景,题目均为企业高频真题,答案简洁实用、贴合开发实际。一、基础概念面试题(基础必问)1、PHP中函数的定义规则是什么?函数名有哪些命名规范?参考答案:1.函数使用function函数名(参数列表){函数体}格式定义,结束可加return返回值,无return默认返回null;2.函数名不区分大小写,但推荐统一小写+下划线规范书写;3.命名只能由字母、数字、下划线组成,不能以数字开头;4.函数名不可使用PHP关键字,且同一作用域内不能定义重名函数;5.PHP函数支持提前调用(先调用后定义),除了条件判断、循环内的动态定义函数。2、简述PHP函数中return的作用,没有return会返回什么?参考答案:return核心作用有三个:一是终止函数执行,return后的代码不会执行;二是向函数外部返回指定数据;三是可直接中断脚本执行(在全局作用域使用时)。如果函数中没有书写return语句,函数执行完毕后会默认返回null。同时return只能返回单一值,如需返回多个数据,可通过数组、对象封装后返回。3、PHP函数参数有几种类型?分别说明特点参考答案:一共四种参数类型,是开发和面试高频考点:1.必选参数:调用函数时必须传入对应数值,数量、顺序必须和定义一致,缺一报错;2.默认参数:定义参数时设置默认值,调用时不传参则使用默认值,默认参数必须放在必选参数后方;3.引用参数:参数前加&符号,传递的是变量内存地址,函数内部修改参数值,会直接改变外部原始变量;4.可变参数:使用...$args接收任意数量参数,自动将传入参数封装为数组,适合参数数量不固定的场景。二、变量作用域与参数进阶题(高频考点)4、PHP中全局变量、局部变量、静态变量的区别?static静态函数变量的特点参考答案:1.局部变量:定义在函数内部,仅函数内有效,函数执行结束后变量销毁,内存释放;2.全局变量:定义在函数外部,全局脚本可访问,函数内使用需通过global关键字或$GLOBALS超全局变量引入;函数内部修改全局变量,外部值同步变更;3.静态变量(static):仅初始化一次,函数执行结束后变量不会销毁,会保留上一次执行的数值,下次调用函数时继续沿用该值;仅在当前函数内有效,不影响全局变量。适用场景:统计函数调用次数、缓存单次计算结果、递归数据累计等。5、函数值传递和引用传递的区别,分别举例说明使用场景参考答案:1.值传递(默认):传递变量的副本,函数内部修改参数值,不会影响外部原始变量,数据相互独立;适合普通数值、字符串、简单数组传递,安全无副作用。2.引用传递(&):传递变量内存地址,内外共用同一个变量,内部修改直接改变外部原值;适合大数据数组、对象传递(节省内存),或需要函数直接修改外部变量的场景。示例:php
//值传递
functiontest1($num){
$num=100;
}
$a=10;
test1($a);
echo$a;//输出10,原值不变
//引用传递
functiontest2(&$num){
$num=100;
}
$b=10;
test2($b);
echo$b;//输出100,原值被修改6、global关键字和$GLOBALS的区别?开发中推荐哪种?参考答案:1.global:在函数内声明全局变量,本质是在函数内创建一个和全局变量同名的局部变量,指向同一内存地址,仅支持单个变量声明;2.$GLOBALS:超全局数组,可在任意作用域访问、修改所有全局变量,支持批量操作,无需提前声明;3.开发推荐使用$GLOBALS,写法更灵活,且能避免global多次声明变量带来的逻辑混乱,代码可读性更高。三、常用系统函数面试题(实操必考)7、简述PHP中empty()、isset()、is_null()的区别与使用场景参考答案:1.isset():检测变量是否存在且不为null,变量未定义、值为null时返回false,其余情况(0、空字符串、空数组)均返回true;主要用于判断变量、数组键名是否存在。2.empty():检测变量是否为空,0、''、[]、null、false、未定义变量,都会判定为空,返回true;主要用于判断表单、参数是否为空值。3.is_null():仅判定变量值是否为null,只有变量值严格为null时返回true,其余全部返回false;精准判断空值场景。8、字符串处理常用函数有哪些?分别说明核心用途参考答案:1.strlen():获取字符串字节长度;mb_strlen():获取字符串字符长度(中文必备);2.trim():去除字符串首尾空格和换行;ltrim()/rtrim():单独去除左/右空格;3.explode():将字符串按指定分隔符拆分为数组;implode():将数组拼接为字符串;4.str_replace():字符串批量替换;strpos():查找字符首次出现位置;5.substr():截取字符串片段,用于内容缩略、字段截取。9、数组常用函数分类说明,列举高频开发用法参考答案:1.增删改查:array_push()/array_pop()(尾部增删)、array_unshift()/array_shift()(头部增删);2.键值操作:array_keys()获取所有键、array_values()获取所有值、isset()判断键是否存在;3.筛选排序:array_filter()过滤数组空值、array_merge()合并数组、sort()/rsort()升降序排序;4.去重统计:array_unique()数组去重、count()统计数组元素个数。四、高级函数面试题(中高级必问)10、什么是匿名函数(闭包函数)?常用场景是什么?参考答案:匿名函数是没有函数名的函数,也叫闭包,可直接赋值给变量、作为函数参数传递,无需全局注册,随用随定义。核心特点:可通过use关键字引入外部变量到函数内部,默认值传递,加&可实现引用传递。常用场景:数组回调处理(array_filter、array_map)、事件回调、路由回调、临时逻辑封装,避免定义大量全局函数,减少全局污染。示例代码:php
$num=10;
$func=function()use($num){
return$num*2;
};
echo$func();11、递归函数的定义、必备条件及优缺点参考答案:递归函数:函数内部调用自身的函数。必备两个条件:1.递归出口(终止条件,避免无限递归报错);2.递归递进逻辑(逐步靠近终止条件)。常用场景:无限级分类、树形结构遍历、文件目录遍历、阶乘计算。优点:代码简洁、逻辑清晰,适配层级嵌套数据处理;缺点:递归层级过深会消耗大量内存,容易出现栈溢出报错,执行效率低于循环。12、PHP可变函数是什么?使用注意事项参考答案:可变函数:将函数名赋值给变量,通过变量加括号的方式调用函数,变量的值必须是合法函数名。示例:$func='strlen';echo$func('abc');注意事项:禁止直接接收用户传入的参数作为可变函数名,会导致任意函数执行漏洞,引发安全风险;使用前必须做白名单校验。五、易错坑点与安全面试题(面试加分项)13、PHP函数传参默认值的坑点是什么?参考答案:1.默认参数必须放在所有必选参数的后面,否则直接报错;2.默认值仅在函数未传参时生效,传参后会覆盖默认值;3.不支持变量、表达式作为默认值,仅支持常量、字符串、数字、数组等固定值;4.多个默认参数时,跳过前面默认参数传参会导致参数错位,建议调用时指定参数名传参。14、简述PHP函数相关的常见安全漏洞及规避方案参考答案:1.可变函数漏洞:用户可控参数直接作为函数名调用,可执行任意系统函数;规避:添加函数白名单,仅允许指定函数执行。2.eval函数代码注入:eval可执行字符串PHP代码,接收用户参数会导致代码注入;规避:开发中尽量禁用eval,必要时严格过滤参数。3.文件操作函数漏洞:file_get_contents、include等函数接收用户路径参数,导致目录遍历漏洞;规避:限制文件路径,过滤../特殊字符。15、include和require、include_once和require_once的函数区别参考答案:1.include:引入文件失败抛出警告,脚本继续执行;2.require:引入文件失败抛出致命错误,脚本终止执行;3.include_once/require_once:自带去重机制,仅引入一次文件,避免重复定义函数、重复赋值报错;开发规范:核心配置、核心文件用require_once,模板、视图文件用include。六、编程实操真题(手写代码必考)16、手写递归函数,计算1-100累加和参考答案:php
functionsum($n){
//递归出口
if($n==1){
return1;
}
//递归递进
return$n+sum($n-1);
}
echosum(100);//输出505017、手写匿名函数结合array_filter,过滤数组中所有空值参考答案:php
$arr=[1,0,'',null,2,[],3];
//过滤空值,保留有效数据
$newArr=array_filter($arr,function($val){
//自定义过滤规则,仅排除空值
return$val!==''&&$val!==null&&$val!==[];
});
print_r($newArr);18、封装一个通用字符串截取函数,支持中文不乱码参考答案:php
functionsub_str($str,$length=10,$suffix='...'
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025~2026学年广东省惠州市惠阳区北师大版六年级上册期中数学试卷【附答案】
- 2026年调度证考试试题及答案解析
- 工业管道标识安装工规程
- 排烟系统清洗安全操作规程
- 2025-2026学年河北省石家庄市初中数学七年级期末上册高分通关实战演练题(详细参考解析)
- Oracle数据库高频面试题及详细答案(实操版)
- 肠内营养管路污染防控操作细则共识
- 管道保温安装工安全操作规程
- 2026护理核心制度考试试题+答案
- 儿童骨骼发育异常诊疗指南(2026版)
- 2026年山西航空产业集团有限公司人员招聘笔试参考试题及详细答案解析
- 2026中国辅助生殖技术服务渗透率提升路径与区域市场差异调查报告
- 2026中国工业互联网安全威胁态势与防护体系建设研究报告
- 《人形机器人数据训练场建设规范》
- 2026年中级注册安全工程师《安全生产管理》模拟考试题(含答案解析)
- 2026年广州市中考语文试卷(含答案及解析)
- 2026年智能矿山无人工作面技术知识考察试题及答案
- 运用CBS-RISE教学模式在新入职护士教学查房中的应用
- 心内科医师心脏超声诊断技术高级培训规范征求意见稿
- 医院教学工作会议记录
- 医学人文与沟通:疫苗接种家长沟通课件
评论
0/150
提交评论