分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

php面试题

发布时间:2023-09-06 01:26责任编辑:沈小雨关键词:面试题

【总结】PHP常见面试题汇总(一)。。。

  1. /**
  2. *第1题:用PHP打印出上周的时间格式,如:"2015-01-2214:42:09"
  3. */
  4. echodate("Y-m-dH:i:s",strtotime("-1day"))."<br/>";
  1. /**
  2. *第2题:用PHP打印出上周的时间格式,如:"2015-01-1514:42:09"
  3. */
  4. echodate("Y-m-dH:i:s",strtotime("-1week"))."<br/>";
  1. /**
  2. *第3题:用PHP打印出上个月的时间格式,如:"2014-12-2214:42:09"
  3. */
  4. echodate("Y-m-dH:i:s",strtotime("-1month"))."<br/>";
  1. /**
  2. *第4题:简述一下echo、print、print_r区别
  3. *print_r()主要用来输出数组的结构;echo和print主要用来输出字符串,只不过echo可同时输出多个字符串,print只能输出一个字符串;
  4. *echo和print区别:
  5. (1)使用命令方式来输出字符串,此时不需要小括号;看个人习惯,个人习惯使用命令方式来输出字符串
  6. (2)使用函数方式来输出字符串,echo无返回值,print有返回值,成功返回1,失败返回0
  7. */
  8. print_r(array("helloworld"))."<br/>";
  9. echo(print"ddd")."<br/>";
  1. /**
  2. *第5题:如何实现字符串反转,如:"abcdefg"反转成"gfedcba";两种方式:(1)调用php自带的strrev()函数(2)自定义函数strrevv
  3. */
  4. echostrrev("abcdefg")."<br/>";
  5. $str="abcdefg";
  6. functionstrrevv($str){
  7. $len=strlen($str);
  8. $newstr=‘‘;
  9. for($i=$len-1;$i>=0;$i--){
  10. $newstr.=$str{$i};
  11. }
  12. return$newstr;
  13. }
  14. $showstr=strrevv($str);
  15. echo$showstr."<br>";
  16. //array_reverse():将原数组中的元素顺序反转,创建新的数组并返回;如果第二个参数指定为true,则元素的键名保持不变,如下:
  17. $a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
  18. print_r(array_reverse($a));
  19. //输出结果:
  20. Array([c]=>Horse[b]=>Cat[a]=>Dog)
  1. **
  2. *第6题:如何实现中文字符串截取无乱码的方法(mb_*系列函数),首先:需要开启extension=php_mbstring.dll扩展,结果:"你"
  3. */
  4. echomb_substr("你好",0,1,"gb2312")."<br/>";
  1. *第7题:用PHP写出显示客户端和服务器端IP的代码
  2. */
  3. echo$_SERVER[‘REMOTE_ADDR‘];//客户端IP
  4. echo$_SERVER[‘SERVER_ADDR‘];//服务器端IP
  5. echo$_SERVER[‘PHP_SELF‘];//结果:"/index.php"当前脚本的名称(不包括路径和查询字符串)
  6. echo$_SERVER["HTTP_REFERER"];//链接到当前页面的来源url
  7. echogethostbyname("www.v1pin.com");//获取指定域名的IP地址
  8. echogetenv("REMOTE_ADDR");//获取客户端IP地址
  9. echogetenv("SERVER_ADDR");//获取服务器端IP地址
  1. /**
  2. *第8题:mysql中IFNULL控制流函数;IFNULL()
  3. *IFNULL():
  4. *(1)它有两个参数,并且对第一个参数进行判断。
  5. *(2)如果第一个参数不是NULL,函数就会向调用者返回第一个参数;如果是NULL,将返回第二个参数;
  6. *例如:
  7. *SELECTIFNULL(1,2),IFNULL(NULL,10),IFNULL(4*NULL,‘false‘);//结果:"110false"
  8. */
  1. /**
  2. *第9题:简述include与require的区别?
  3. *相同点:
  4. *(1)include与require都能把另外一个文件包含到当前文件中
  5. *异同点:
  6. *(1)使用include时,当包含的文件不存在时系统会报出警告级别的错误,但并不影响程序的后续执行.
  7. *(2)使用require时,当包含的文件不存在时系统会先报出警告级别的错误,接着又报出一个致命性的错误,将终止程序的后续执行.
  8. *(3)require只会解释包含的文件一次,不会再解释第二次,因而效率相对较高;而include则会重复的解释包含的文件
  9. *(4)载入时机不同:require在运行前载入包含文件,include在运行时载入包含文件
  10. */
  1. /**
  2. *第10题:如何获取一个字符串中指定的字符?
  3. */
  4. $str="abcdefg";
  5. echo$str{2}."<br/>";
  6. /**
  1. *第11题:如何批量替换字符串中的特定字符?如:"批量替换$content内容字符串中的所有双引号为单引号"
  2. */
  3. $content=str_replace($searchs=array("\""),$replaces=array("‘"),$content);
  1. /**
  2. *第12题:如何将UEditor或FCkeditor编辑器中的内容转化为JSON串?
  3. *
  4. *(1)第一种情况,内容中只有双引号的情况:
  5. *$content=‘<imgsrc="../image/20121025/20121025105514_1093.jpg"/>‘;
  6. *//{"content":"<imgalt=\"\"src=\"..\/image\/20121025\/20121025105514_1093.jpg\"\/>"}
  7. *echojson_encode(array("content"=>$content));
  8. *(2)第二种情况,内容中只有单引号的情况:
  9. *$content="<imgalt=‘‘src=‘../image/20121025/20121025105514_1093.jpg‘/>";
  10. *//{"content":"<imgalt=‘‘src=‘..\/image\/20121025\/20121025105514_1093.jpg‘\/>"}
  11. *echojson_encode(array("content"=>$content));
  12. *(3)第三种情况,内容中既有双引号,又有单引号的情况:
  13. *$content=htmlspecialchars($content);//把一些预定义的字符转换为HTML实体
  14. *$json_arr=json_encode(array("content"=>$content));//将数组json化为字符串
  15. *$arr=json_decode($json_arr,true);//将json串反json化为数组
  16. *$arr[‘content‘]=htmlspecialchars_decode($arr[‘content‘]);//把一些预定义的HTML实体转换为字符显示到网页中
  17. *
  18. */
  1. /**
  2. *第13题:addslashes()与htmlspecialchars()区别
  3. *
  4. *区别:
  5. *(1)addslashes()函数主要在指定的预定义字符前添加反斜杠,这些预定义字符主要包括:
  6. *
  7. *单引号(‘)
  8. *双引号(")
  9. *反斜杠(\)
  10. *NULL
  11. *
  12. *addslashes()函数的主要作用是保证这些预定义字符能够正确入库,仅此而已
  13. *(2)htmlspecialchars()函数把一些预定义的字符转换为HTML实体,这些预定义字符主要包括:
  14. *&(和号)成为&amp;
  15. *"(双引号)成为&quot;
  16. *‘(单引号)成为&#039;
  17. *<(小于)成为&lt;
  18. *>(大于)成为&gt;
  19. *echohtmlspecialchars($str,ENT_COMPAT);//默认,仅编码双引号
  20. *echohtmlspecialchars($str,ENT_QUOTES);//编码双引号和单引号
  21. *echohtmlspecialchars($str,ENT_NOQUOTES);//不编码任何引号
  22. */**
  1. *第14题:如何去除数组中重复的值?使用数组函数array_unique()可以做到
  2. *案例结果:
  3. *Array(
  4. *[0]=>8535455928182811
  5. *[1]=>1558999140182811
  6. *[3]=>5795844841182811
  7. *)
  8. */
  9. $arr=array(
  10. "8535455928182811",
  11. "1558999140182811",
  12. "1558999140182811",
  13. "5795844841182811",
  14. "5795844841182811",
  15. );
  16. $ordersn_arr=array_unique($arr);
  17. echo"<pre>";print_r($ordersn_arr);exit;
  1. /*
  2. *第15题:说一说自己对$GLOBALS全局变量和global关键字的理解?
  3. *
  4. *(1)、输出$GLOBALS全局变量:
  5. *
  6. *echo"<pre>";print_r($GLOBALS);
  7. *
  8. *结果:
  9. *Array
  10. *(
  11. *[GLOBALS]=>Array
  12. **RECURSION*
  13. *[_POST]=>Array
  14. *(
  15. *[username]=>admin//等价于$_POST[‘username‘]
  16. *[password]=>123//等价于$_POST[‘password‘]
  17. *)
  18. *[_GET]=>Array
  19. *(
  20. *[username]=>admin//等价于$_GET[‘username‘]
  21. *[password]=>123//等价于$_GET[‘password‘]
  22. *)
  23. *[_COOKIE]=>Array
  24. *(
  25. *[PHPSESSID]=>movgbv4t1klb9fsbcd7ns8ik73
  26. *[username]=>admin//等价于$_COOKIE[‘username‘]
  27. *[password]=>123//等价于$_COOKIE[‘password‘]
  28. *)
  29. *[_FILES]=>Array
  30. *(
  31. *[name]=>1.txt//等价于$_FILES[‘username‘]
  32. *[type]=>image/jpeg//等价于$_FILES[‘password‘]
  33. *)
  34. *[_SESSION]=>Array
  35. *(
  36. *[username]=>admin//等价于$_SESSION[‘username‘]
  37. *[password]=>123//等价于$_SESSION[‘password‘]
  38. *)
  39. *[pwd]=>134121233//等价于$pwd
  40. *[username]=>xiaoqiang//等价于$username
  41. *[password]=>123//等价于$password
  42. *)
  43. *
  44. *(2)、几种等价的写法:
  45. *
  46. *(1)$_SESSION[‘username‘]等价于$GLOBALS[‘_SESSION‘][‘username‘]
  47. *(2)$_COOKIE[‘username‘]等价于$GLOBALS[‘_COOKIE‘][‘username‘]
  48. *(3)$_GET[‘username‘]等价于$GLOBALS[‘_GET‘][‘username‘]
  49. *(4)$_POST[‘username‘]等价于$GLOBALS[‘_POST‘][‘username‘]
  50. *(5)$_FILES[‘username‘]等价于$GLOBALS[‘_FILES‘][‘username‘]
  51. *(6)$username等价于$GLOBALS[‘username‘]
  52. *
  53. *(3)、global关键字:
  54. *
  55. *php中全局变量在函数体内使用时必须声明为global;在函数体内通过global关键字声明的变量自动变为函数体外的全局变量
  56. *
  57. *案例1:
  58. *
  59. *functiontest(){
  60. *global$username;//声明全局变量时不能赋值
  61. *$username="小强";//此时可以给全局变量赋值
  62. *}
  63. *test();
  64. *echo"<pre>";print_r($GLOBALS);exit;//结果:"小强"
  65. *
  66. *案例2:
  67. *
  68. *$username="小强";
  69. *functiontest(){
  70. *global$username;//声明全局变量时不能赋值(提示:使用global关键字引用函数体外的$username变量)
  71. *$username="小红";//此时可以给全局变量赋值(提示:将函数体外$username变量重新赋值)
  72. *}
  73. *test();
  74. *echo"<pre>";print_r($GLOBALS);exit;//结果:"小红"
  75. *
  76. *(4)、全局变量的生效范围:
  77. *
  78. *$a=1;include‘b.inc‘;//这里变量$a将会在包含文件b.inc中生效
  79. *
  80. *(5)、global声明的变量为全局变量,在函数和类的外部照样可以使用
  81. *
  82. *如:discuz_application.php类中使用global关键字声明的$_G全局变量,在全站都可以使用
  83. */
[php]view plaincopy
  1. /**
  2. *第16题:回调函数call_user_func()如何使用?
  3. *格式一:
  4. *call_user_func("自定义函数","传递给自定义函数的参数1","传递给自定义函数的参数2","传递给自定义函数的参数3","传递给自定义函数的参数N....");//返回结果为自定义函数的返回结果
  5. *格式二:
  6. *call_user_func(array("类名","方法名"),"传递给类中方法的参数1","传递给类中方法的参数2","传递给类中方法的参数3","传递给类中方法的参数N....");//返回结果为类中方法的返回结果
  7. *格式三:
  8. *call_user_func_array("自定义函数",array("传递给类中方法的参数1","传递给类中方法的参数2","传递给类中方法的参数3","传递给类中方法的参数N...."));//传递给函数的参数统一放到数组中
  9. *格式四:
  10. *call_user_func_array(array("类名","方法名"),array("传递给类中方法的参数1","传递给类中方法的参数2","传递给类中方法的参数3","传递给类中方法的参数N...."));//传递给方法的参数统一放到数组中
  11. */
  12. functionuc_feed_add($icon,$uid,$username,$title_template=‘‘,$title_data=‘‘,$body_template=‘‘,$body_data=‘‘,$body_general=‘‘,$target_ids=‘‘,$images=array()){
  13. //UC_API_FUNC值为:‘uc_api_mysql‘或‘uc_api_post‘;
  14. //调用自定义函数‘uc_api_mysql‘或‘uc_api_post‘
  15. //返回结果为自定义函数的返回结果
  16. returncall_user_func(UC_API_FUNC,‘feed‘,‘add‘,
  17. array(‘icon‘=>$icon,
  18. ‘appid‘=>UC_APPID,
  19. ‘uid‘=>$uid,//用户ID
  20. ‘username‘=>$username,
  21. ‘title_template‘=>$title_template,
  22. ‘title_data‘=>$title_data,
  23. ‘body_template‘=>$body_template,
  24. ‘body_data‘=>$body_data,
  25. ‘body_general‘=>$body_general,
  26. ‘target_ids‘=>$target_ids,
  27. ‘image_1‘=>$images[0][‘url‘],
  28. ‘image_1_link‘=>$images[0][‘link‘],
  29. ‘image_2‘=>$images[1][‘url‘],
  30. ‘image_2_link‘=>$images[1][‘link‘],
  31. ‘image_3‘=>$images[2][‘url‘],
  32. ‘image_3_link‘=>$images[2][‘link‘],
  33. ‘image_4‘=>$images[3][‘url‘],
  34. ‘image_4_link‘=>$images[3][‘link‘]
  35. )
  36. );
  37. }
[php]view plaincopy
  1. //第17题:如何使用array_multisort()函数实现对多维数组进行排序?
  2. //模拟从数据库中查询出来的记录(提示:二维数组)
  3. $arr[]=array("age"=>20,"name"=>"小强");
  4. $arr[]=array("age"=>21,"name"=>"李伟");
  5. $arr[]=array("age"=>20,"name"=>"小亮");
  6. $arr[]=array("age"=>22,"name"=>"黎明");
  7. foreach($arras$key=>$value){
  8. $age[$key]=$value[‘age‘];//排序字段"age"
  9. $name[$key]=$value[‘name‘];//排序字段"name"
  10. }
  11. /**
  12. *1、对$arr数组进行排序
  13. *首先按照年龄从大到小的顺序排列,如果年龄相同再按照名字的顺序排序,类似于sql中的orderby
  14. *2、注意事项:
  15. *(1)$age和$name等价于数据表的"age"和"name"列字段,类似于"orderbyagedesc,nameasc"
  16. *(2)排序顺序标志:
  17. *SORT_ASC-按照上升顺序排序
  18. *SORT_DESC-按照下降顺序排序
  19. *(3)排序类型标志:
  20. *SORT_REGULAR-将项目按照通常方法比较
  21. *SORT_NUMERIC-将项目按照数值比较
  22. *SORT_STRING-将项目按照字符串比较
  23. *(4)排序标志的默认值为:SORT_ASC和SORT_REGULAR
  24. *(5)每个一维数组后指定的排序标志仅仅对该一维数组有效,一个一维数组不能指定两个同类的排序标志
  25. *(6)该函数会改变数字索引,其它索引不改变
  26. *
  27. */
  28. array_multisort($age,SORT_NUMERIC,SORT_DESC,$name,SORT_STRING,SORT_ASC,$arr);
  29. echo"<pre>";print_r($arr);exit;
  30. /**
  31. *结果:等价于"select*fromuserorderbyagedesc,nameasc";
  32. *Array(
  33. *[0]=>Array
  34. *(
  35. *[age]=>22
  36. *[name]=>黎明
  37. *)
  38. *[1]=>Array
  39. *(
  40. *[age]=>21
  41. *[name]=>李伟
  42. *)
  43. *[2]=>Array
  44. *(
  45. *[age]=>20
  46. *[name]=>小亮
  47. *)
  48. *[3]=>Array
  49. *(
  50. *[age]=>20
  51. *[name]=>小强
  52. *)
  53. *)
  54. */
[php]view plaincopy
  1. //第18题:移除数组中元素中的几种方式?
  2. //案例一:
  3. $arr1=array(‘1‘,‘2‘,‘3‘,‘4‘);
  4. //提示:虽然删除了元素,但是没有重建数组索引
  5. unset($arr1[2]);
  6. echo"<pre>";print_r($arr1);
  7. /**
  8. *使用unset()函数处理后的结果:
  9. *Array(
  10. *[0]=>1
  11. *[1]=>2
  12. *[3]=>4
  13. *)
  14. */
  15. //案例二:
  16. $arr2=array(‘1‘,‘2‘,‘3‘,‘4‘);
  17. //提示:删除了元素,并且重建了数组索引
  18. array_splice($arr2,2,1);//参数2-开始位置参数3-删除元素数量
  19. echo"<pre>";print_r($arr2);
  20. /**
  21. *使用array_splice()函数处理后的结果:
  22. *Array(
  23. *[0]=>1
  24. *[1]=>2
  25. *[2]=>4
  26. *)
  27. */
  28. //案例
我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved