PHP 逻辑面试题及详细答案(实战版)_第1页
PHP 逻辑面试题及详细答案(实战版)_第2页
PHP 逻辑面试题及详细答案(实战版)_第3页
PHP 逻辑面试题及详细答案(实战版)_第4页
PHP 逻辑面试题及详细答案(实战版)_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

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

文档简介

PHP逻辑面试题及详细答案(实战版)本套面试题聚焦PHP核心逻辑、开发常见坑点、代码执行规则,摒弃书面化理论,全部为企业面试高频实操题型,答案通俗易懂、贴合真实项目开发逻辑。一、PHP基础逻辑判断题(高频坑点)1、写出以下代码输出结果,并说明原因php

<?php

$a=null;

$b=0;

$c='';

var_dump($a==$b);

var_dump($a===$b);

var_dump($b==$c);

var_dump($b===$c);

?>答案:bool(true)、bool(false)、bool(true)、bool(false)详细解析:1、==是弱类型比较,只对比数值,不区分类型:null、0、空字符串在数值比对中都视为空/0,所以两两相等;2、===是强类型比较,必须数值+类型完全一致才成立:null是空类型、0是整型、空字符串是字符串类型,类型不同,全部不相等;3、项目开发中,判断空值、数值比对,优先使用===杜绝弱类型坑。2、以下代码输出结果是什么?解释PHP递增运算规则php

<?php

$i=5;

echo$i++;

echo$i;

$j=5;

echo++$j;

echo$j;

?>答案:5666详细解析:1、后置递增$i++:先输出变量原有值,再执行自增。第一步输出5,输出后$i变为6,第二次输出6;2、前置递增++$j:先执行自增,再输出变量值。$j先从5变为6,两次输出均为6;3、该逻辑常用于循环分页、序号自增、数据遍历计数场景,是PHP基础核心逻辑。3、判断empty()和isset()的区别,并写出代码输出php

<?php

$a=0;

$b=null;

$c='';

$d;

var_dump(empty($a));

var_dump(isset($a));

var_dump(empty($b));

var_dump(isset($b));

var_dump(empty($c));

var_dump(isset($c));

var_dump(empty($d));

var_dump(isset($d));

?>答案:bool(true)、bool(true)、bool(true)、bool(false)、bool(true)、bool(true)、bool(true)、bool(false)详细解析:1、empty():判断变量是否为空,0、空字符串、null、空数组、未定义变量都判定为空,返回true;2、isset():判断变量是否已定义且不为null,变量赋值为0、空字符串、空数组时,均返回true;变量未定义或值为null,返回false;3、开发常用场景:判断表单、接口参数是否存在用isset,判断参数是否为空有效值用empty。二、流程控制逻辑题(if/else、循环)4、写出以下if逻辑输出结果php

<?php

$num=-1;

if($num=10){

echo'成立';

}else{

echo'不成立';

}

?>答案:成立详细解析:1、代码中是赋值运算符=,不是比较运算符==/===,会先给$num赋值为10;2、PHP中非0、非空、非null的值都判定为true,所以if条件成立;3、高频开发坑点:判断相等时务必写==,手误写=会造成逻辑永久成立/失效。5、for循环逻辑计算题,输出结果php

<?php

$sum=0;

for($i=1;$i<=5;$i++){

if($i==3){

continue;

}

$sum+=$i;

}

echo$sum;

?>答案:12详细解析:1、continue作用:终止本次循环,直接进入下一次循环,不执行后续代码;2、循环执行逻辑:i=1、2、4、5时累加,i=3时跳过;3、计算:1+2+4+5=12;拓展:break是直接终止整个循环,continue仅跳过当前单次循环。三、数组核心逻辑题(项目最高频)6、PHP数组索引、赋值覆盖逻辑,写出输出php

<?php

$arr=[1,2,3];

$arr[3]=4;

$arr[]=5;

unset($arr[2]);

$arr[]=6;

print_r($arr);

?>答案:PlainText

Array

(

[0]=>1

[1]=>2

[3]=>4

[4]=>5

[5]=>6

)详细解析:1、普通索引数组默认从0递增赋值,$arr[]自动追加最大数字索引;2、unset()删除数组指定元素,不会重置数组索引,空缺索引会保留;3、删除索引2的元素后,数组最大索引为4,后续追加6自动赋值索引5;4、如需重置连续索引,可使用array_values()重组数组。7、数组合并逻辑,array_merge和+区别php

<?php

$a=[0=>'a',1=>'b'];

$b=[1=>'c',2=>'d'];

print_r($a+$b);

print_r(array_merge($a,$b));

?>答案:$a+$b结果:0=a、1=b、2=darray_merge结果:0=a、1=c、2=d详细解析:1、数组+合并:保留前面数组的键值,后面数组重复键直接舍弃,不覆盖;2、array_merge()合并:后面数组覆盖前面数组的重复键,数字键、字符串键均生效;3、项目开发中,合并参数、配置数组,优先使用array_merge。四、变量与作用域逻辑题8、全局变量与局部变量作用域输出php

<?php

$num=10;

functiontest(){

$num=20;

global$num;

echo$num;

}

test();

echo$num;

?>答案:1010详细解析:1、global关键字作用:在函数内引入全局变量,必须写在变量赋值之前;2、代码中先定义局部变量$num=20,再通过global引入全局变量,局部变量会被全局变量覆盖,函数内输出全局值10;3、函数外全局变量未被修改,最终输出10;拓展:开发中尽量少用global,可通过参数传值、静态变量、类属性替代。9、静态变量static逻辑输出php

<?php

functiondemo(){

static$a=1;

$a++;

echo$a;

}

demo();

demo();

demo();

?>答案:234详细解析:1、static静态变量:仅在第一次调用函数时初始化一次,后续调用保留上次的值,不会重新赋值;2、执行流程:第一次调用$a=1自增为2,第二次基于2自增为3,第三次基于3自增为4;3、常用于统计函数调用次数、接口请求计数、缓存临时数据。五、经典逻辑编程应用题(面试手写题)10、用PHP写出:判断一个数是否为偶数(最简逻辑)参考答案:php

<?php

functionisEven(int$num):bool

{

//整除2余数为0即为偶数

return$num%2===0;

}

var_dump(isEven(6));//true

var_dump(isEven(5));//false

?>拓展逻辑:判断奇数可直接用$num%2===1,项目中可用于分页奇偶行样式、数据分组。11、PHP遍历数组,筛选出数组中所有大于10的数值参考答案:php

<?php

$arr=[5,12,8,20,15,3,18];

$newArr=[];

//普通foreach遍历(面试首选)

foreach($arras$value){

if($value>10){

$newArr[]=$value;

}

}

print_r($newArr);

//输出:Array([0]=>12[1]=>20[2]=>15[3]=>18)

?>12、实现PHP交换两个变量的值(不使用第三个变量)参考答案:php

<?php

$a=10;

$b=20;

//运算交换(数字通用)

$a=$a+$b;

$b=$a-$b;

$a=$a-$b;

echo$a.','.$b;//输出20,10

?>六、面试核心逻辑简答题13、PHP中&&和and、||和or的区别?答案:1、优先级不同:&&、||优先级高于赋值运算符,and、or优先级低于赋值运算符;2、开发规范:项目中统一使用&&、||,杜绝and/or,避免优先级导致的逻辑出错

温馨提示

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

评论

0/150

提交评论