基本信息
文件名称:PHP基础面试题及答案.docx
文件大小:47.5 KB
总页数:40 页
更新时间:2025-09-25
总字数:约5.77千字
文档摘要

PHP基础面试题及答案

1.说说PHP中变量的作用域有哪几种?实际开发中怎么用?

答案:主要有4种作用域:

局部作用域:函数内部定义的变量,只能在函数里用,函数执行完就销毁。比如函数里定义的$name,外面调不到。

全局作用域:函数外部定义的变量,只能在全局用,函数里要访问得加global关键字,或者用超全局$GLOBALS数组。

示例:

$age=20;//全局变量

functiongetAge(){

global$age;//声明用全局变量

echo$age;//输出20

//也可以用$GLOBALS[age]

}

静态作用域:函数里用static定义的变量,函数执行完不销毁,下次调用还保留上次的值。比如统计函数调用次数:

functioncountCall(){

static$num=0;

$num++;

echo$num;

}

countCall();//1

countCall();//2

超全局作用域:PHP自带的超全局变量(如$_POST、$_GET、$_SESSION),在全局和函数里都能直接用,不用声明。

2.PHP数组分哪两类?实际开发中分别用在什么场景?

答案:主要分索引数组和关联数组,核心区别是键名的类型:

索引数组:键名是数字(默认从0开始),适合存“有序列表”类数据,比如商品列表、用户ID列表:

$goods=[手机,电脑,平板];//索引数组

echo$goods[1];//输出“电脑”

关联数组:键名是自定义字符串,适合存“键值对应”的结构化数据,比如单条用户信息、配置项:

$user=[

id=101,

name=张三,

phone=];//关联数组

echo$user[name];//输出“张三”

3.echo和print有什么区别?实际开发中更常用哪个?

答案:3个核心区别:

返回值:echo没有返回值,print返回1(整数);

输出数量:echo能同时输出多个值(用逗号分隔),print只能输出一个;

用法:echo是语言结构(不用括号也能写,如echoa),print也是语言结构,但习惯加括号(如print(a))。

实际开发中优先用echo,因为效率稍高,且支持多值输出,比如:

echo姓名:,$name,,年龄:,$age;//直接输出多个值

只有需要用返回值的场景才用print,比如:

if(print(数据已输出)){//利用print返回1的特性

echo-输出成功;

}

4.什么是PHP的“面向对象”?说一个你常用的基础特性(比如封装、继承)怎么用?

答案:面向对象(OOP)是把代码封装成“类”(模板)和“对象”(实例),方便复用和维护。以“封装”和“继承”为例:

封装:把类的属性设为私有(private),通过公开的get/set方法访问,避免属性被随意修改。比如用户类控制年龄只能是正数:

classUser{

private$age;//私有属性,外部不能直接改

//设值方法:加逻辑判断

publicfunctionsetAge($age){

if($age0$age150){

$this-age=$age;

}else{

echo年龄无效;

}

}

//取值方法

publicfunctiongetAge(){

return$this-age;

}

}

//使用

$user=newUser();

$user-setAge(25);//有效

echo$user-getAge();//25

$user-setAge(200);//输出“年龄无效”

继承:用extends关键字让子类继承父类的属性和方法,子类还能重写父类方法。比如父类Animal,子类Cat:

classAnimal{

publicfunctionsay(){

echo动物叫;

}

}

//子类继承父类

classCatextendsAnimal{

//重写父类的say方法

publicfunctionsay(){

echo喵喵叫;

}

}

$cat=