- 相关推荐
几道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