几道PHP笔试题

时间:2024-11-06 13:56:01 俊豪 笔试题目 我要投稿
  • 相关推荐

几道PHP笔试题

  无论在学习或是工作中,我们都要用到试题,试题可以帮助参考者清楚地认识自己的知识掌握程度。你所了解的试题是什么样的呢?下面是小编为大家整理的几道PHP笔试题,希望对大家有所帮助。

几道PHP笔试题

  几道PHP笔试题 1

  一、基础知识(每题 5 分,共 30 分)

  1. PHP 中变量的命名规则是什么?请举例说明合法和非法的变量名。

  2. 写出至少 3 种 PHP 中的数据类型,并简述其特点。

  3. PHP 中如何定义一个常量?常量与变量有什么区别?

  4. 简述 PHP 中注释的几种类型,并分别举例。

  5. 以下代码输出什么?

  $a = 5;

  $b = "5";

  var_dump($a == $b);

  var_dump($a === $b);

  6. PHP 中include和require有什么区别?

  二、函数相关(每题 8 分,共 40 分)

  1. 编写一个 PHP 函数,实现计算两个整数的.最大公约数。

  2. 写一个 PHP 函数,接受一个字符串作为参数,将字符串中的所有空格替换为下划线,并返回结果。

  3. 以下是一个 PHP 函数:

  function test($num) {

  if ($num > 0) {

  return $num test($num - 1);

  } else {

  return 1;

  }

  }

  这个函数实现了什么功能?计算test(5)的值。

  4. 编写一个 PHP 函数,接受一个数组作为参数,返回该数组中的最大值。(不使用 PHP 内置的max函数)

  5. 在 PHP 中,如何实现一个自定义函数来检查一个字符串是否是回文(例如“abba”是回文,“abc”不是)?

  三、数组操作(每题 8 分,共 24 分)

  1. 有一个关联数组$arr = array(name=>John, age=>25, city=>New York);,如何遍历这个数组并输出每个键值对?

  2. 给定一个索引数组$nums = [1, 3, 5, 7, 9];,编写代码向数组中添加一个元素 11,并将数组倒序输出。

  3. 有两个数组$arr1 = [1, 2, 3];和$arr2 = [4, 5, 6];,如何将这两个数组合并成一个新数组?

  四、数据库操作(6 分)

  假设你有一个 MySQL 数据库,表名为users,包含id(整数,自增主键)、name(字符串)和age(整数)三个字段。使用 PHP 的 PDO 扩展连接数据库,并查询年龄大于 20 的所有用户的信息。(只需要写出关键的 PDO 代码部分)

  答案

  一、基础知识

  1. 变量命名规则:

  变量名必须以美元符号$开头。

  变量名只能包含字母、数字和下划线,且不能以数字开头。

  合法变量名如$var_name、$user_1;非法变量名如$1var(以数字开头)、$var@name(包含非法字符@)。

  2. 数据类型及特点:

  整型(integer):用于表示整数,如$num = 10;,在 32 位系统中范围是 -2147483648 到 2147483647。

  字符串(string):用于表示字符序列,可以用单引号、双引号或 heredoc 语法来定义。例如$str = hello;或$str2 = "world";,双引号中的变量会被解析,单引号不会。

  布尔型(boolean):只有两个值true和false,常用于条件判断,如$isTrue = true;。

  数组(array):可以存储多个值,可以是索引数组(用数字作为索引)或关联数组(用字符串作为键),如$arr = [1, 2, 3];(索引数组)或$arr2 = array(key1=>value1, key2=>value2);(关联数组)。

  浮点型(float/double):用于表示带有小数的数字,如$floatNum = 3.14;。

  3. 常量定义及与变量区别:

  常量使用define()函数定义,如define(PI, 3.14);,或者使用const关键字(PHP 5.3 及以上),如const MAX_VALUE = 100;。

  区别:变量的值可以在程序运行中改变,而常量一旦定义就不能重新赋值;常量没有美元符号前缀;常量在整个脚本执行期间其值保持不变。

  4. 注释类型及举例:

  单行注释:使用//,例如// 这是单行注释。

  多行注释:使用/ /,例如/ 这是多行注释,可以跨越多行 /。

  5. 输出结果:

  var_dump($a == $b);输出bool(true),因为==只比较值,5 和"5"的值相等。

  var_dump($a === $b);输出bool(false),因为===比较值和类型,$a是整型,$b是字符串。

  6. include和require区别:

  当使用include包含文件时,如果文件不存在,会产生一个警告,脚本继续执行。

  当使用require包含文件时,如果文件不存在,会产生一个致命错误,脚本停止执行。

  二、函数相关

  1. 计算最大公约数函数:

  php

  function gcd($a, $b) {

  while ($b!= 0) {

  $temp = $b;

  $b = $a % $b;

  $a = $temp;

  }

  return $a;

  }

  2. 替换空格为下划线函数:

  php

  function replaceSpace($str) {

  return str_replace( , _, $str);

  }

  3. 函数功能及test(5)的值:

  这个函数实现了阶乘功能。test(5)的值为5 4 3 2 1 = 120。

  4. 求数组最大值函数(不使用max):

  php

  function getMax($arr) {

  $max = $arr[0];

  for ($i = 1; $i < count($arr); $i++) {

  if ($arr[$i] > $max) {

  $max = $arr[$i];

  }

  }

  return $max;

  }

  5. 检查回文函数:

  php

  function isPalindrome($str) {

  $len = strlen($str);

  for ($i = 0; $i < $len / 2; $i++) {

  if ($str[$i]!= $str[$len - $i - 1]) {

  return false;

  }

  }

  return true;

  }

  三、数组操作

  1. 遍历关联数组:

  php

  $arr = array(name=>John, age=>25, city=>New York);

  foreach ($arr as $key => $value) {

  echo "$key: $value
";

  }

  2. 添加元素并倒序输出索引数组:

  php

  $nums = [1, 3, 5, 7, 9];

  $nums[] = 11;

  rsort($nums);

  print_r($nums);

  3. 合并两个数组:

  使用array_merge函数,$newArr = array_merge($arr1, $arr2);。

  四、数据库操作

  php

  try {

  $pdo = new PDO(mysql:host=localhost;dbname=your_database, username, password);

  $query = "SELECT FROM users WHERE age > 20";

  $stmt = $pdo->query($query);

  $results = $stmt->fetchAll(PDO::FETCH_ASSOC);

  print_r($results);

  } catch(PDOException $e) {

  echo "Connection failed: ". $e->getMessage();

  }

  几道PHP笔试题 2

  1. 如何用php的环境变量得到一个网页地址的内容?ip地址又要怎样得到?

  2. 求两个日期的差数,例如2007-2-5 ~ 2007-3-6 的日期差数

  3. 请写一个函数,实现以下功能:

  字符串“open_door” 转换成 “OpenDoor”、”make_by_id” 转换成 ”MakeById”。

  4. 要求写一段程序,实现以下数组$arr1转换成数组$arr2:

  $arr1 = array (

  ’0′ => array (‘fid’ => 1, ‘tid’ => 1, ‘name’ =>’Name1′ ),

  ’1′ => array (‘fid’ => 1, ‘tid’ => 2 , ‘name’ =>’Name2′ ),

  ’2′ => array (‘fid’ => 1, ‘tid’ => 5 , ‘name’ =>’Name3′ ),

  ’3′ => array (‘fid’ => 1, ‘tid’ => 7 , ‘name’ =>’Name4′ ),

  ’4′ => array (‘fid’ => 3, ‘tid’ => 9, ‘name’ =>’Name5′ )

  );

  $arr2 = array (

  ’0′ => array (

  ’0′ => array ( ‘tid’ => 1, ‘name’ => ‘Name1′),

  ’1′ => array ( ‘tid’ => 2, ‘name’ => ‘Name2′),

  ’2′ => array ( ‘tid’ => 5, ‘name’ => ‘Name3′),

  ’3′ => array ( ‘tid’ => 7, ‘name’ => ‘Name4′)

  ),

  ’1′ => array (

  ’0′ => array ( ‘tid’ => 9, ‘name’ => ‘Name5′ )

  )

  );

  5. 请简述数据库设计的范式及应用。

  一般第3范式就足以,用于表结构的优化,这样做既可以避免应用程序过于复杂同时也避免了SQL语句过于庞大所造成系统效率低下。

  6.一个表中的Id有多个记录,把所有这个id的记录查出来,并显示共有多少条记录数,用SQL语句及视图、存储过程分别实现。

  DELIMITER //

  CREATE PROCEDURE ProcGet

  (

  IN ID_a INT(11)

  )

  BEGIN

  DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN END;

  SELECT COUNT() AS Sum FROM News Where ID = ID_a;

  END;//

  CALL ProcGet(88)//

  7 表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。

  DELIMITER //

  CREATE PROCEDURE ProcOut()

  BEGIN

  DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN END;

  DECLARE Sum_a INT(11);

  DECLARE Sum_b INT(11);

  DECLARE Sum_c INT(11);

  – 获取A列中的.总值 <–

  DECLARE cur_1 CURSOR FOR SELECT SUM(A) FROM table_name;

  OPEN cur_1;

  FETCH cur_ 1 INTO Sum_a;

  CLOSE cur_1;

  – 获取B列中的总值 <–

  DECLARE cur_2 CURSOR FOR SELECT SUM(B) FROM table_name;

  OPEN cur_2;

  FETCH cur_ 2 INTO Sum_b;

  CLOSE cur_2;

  – 获取C列中的总值 <–

  DECLARE cur_3 CURSOR FOR SELECT SUM(C) FROM table_name;

  OPEN cur_3;

  FETCH cur_ 3 INTO Sum_c;

  CLOSE cur_3;

  IF Sum_a > Sum_b THEN

  SELECT A FROM table_name;

  ELSEIF Sum_b > Sum_c THEN

  SELECT B FROM table_name;

  ELSE

  SELECT C FROM table_name;

  END IF;;

  END;//

  CALL ProcOut()//

  8请简述项目中优化sql语句执行效率的方法,从哪些方面,sql语句性能如何分析?

  9 如果模板是用smarty模板。怎样用section语句来显示一个名为$data的数组。比如:

  $data = array(

  [0] => array( [id]=8 [name]=’name1′)

  [1] => array( [id]=10 [name]=’name2′)

  [2] => array( [id]=15 [name]=’name3′)

  ……

  )

  写出在模板页的代码? 若用foreach语句又要怎样显示呢?

  10 写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。(目录操作)

  11 两张表 city表和province表。分别为城市与省份的关系表。

  city:

  id City Provinceid

  1 广州 1

  2 深圳 1

  3 惠州 1

  4 长沙 2

  5 武汉 3

  ………. 广州

  province:

  id Province

  1 广东

  2 湖南

  3 湖北

  ……….

  (1) 写一条sql语句关系两个表,实现:显示城市的基本信息。?

  (2) 显示字段:城市id ,城市名, 所属省份 。

  如:

  Id(城市id) Cityname(城市名) Privence(所属省份)

  (2)如果要统计每个省份有多少个城市,请用group by 查询出来。?

  显示字段:省份id ,省份名,包含多少个城市。

  12. 按照你的经验请简述软件工程进行软件开发的步骤。以下工具Rational Rose、PowerDesigner、Project、VSS或CVS、TestDirector使用过那种,有缺点是什么?

  13. 请简述操作系统的线程与进程的区别。列举LINUX下面你使用过的软件?

  14. 请使用伪语言结合数据结构冒泡排序法对以下一组数据进行排序 10 2 36 14 10 25 23 85 99 45。

【几道PHP笔试题】相关文章:

笔试题:ASP与PHP04-05

PHP基础笔试题12-10

PHP笔试题及答案02-11

php面试题?10-29

Yahoo-PHP笔试题02-11

PHP笔试题含答案02-11

腾讯php面试题08-26

PHP面试题汇编04-07

Yahoo的PHP面试题04-05