PHP复习题附答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
php复习题
第2章数据与变量
1. 写出相关PHP代码的输出结果。
(1)
$a = "hello";
$b = &$a;
$b = 100;
echo $a;
答案:100
(2)
$test = ‘aaaaaa’;
$abc = &$test;
unset($test);
echo $abc;
答案:aaaaaa
(3)
$var1 = 5;
$var2 = 1;
function get_value(){
global $var2;
$var1 = 0;
return $var2++;
}
get_value();
echo $var1, $var2;
答案:52
(4)
function get_count(){
static $count = 2;
return $count++;
}
$count = 5;
get_count();
echo get_count();
答案:3
(5)
$num =10;
function multiply(){
$num =$num *10;
}
multiply();
echo $num;答案:10
第3章运算符与控制流程
1. 写出相关PHP代码的输出结果。
(1)
$str1 = null;
$str2 = false;
var_dump($str1==$str2);
答案:bool(true)
(2)
$str1 = 0;
$str2 = ‘0’;
var_dump($str1===$str2);
答案:bool(false)
(3)
$a2 = false;
echo empty($a2) ? ‘true’ : ‘false’;
答案:true
(4)
$a4 = ”;
echo empty($a4) ? ‘true’ : ‘false’;
答案:true
(5)
$a6 = ‘null’;
echo empty($a6) ? ‘true’ : ‘false’;
答案:false
(6)
$a8 = array(array());
echo empty($a8) ? ‘true’ : ‘false’;
答案:false
(7)
$i=10;
$n = $i++;
echo $n, $i++, ++$i;
答案:101113
2. 简答题
(1) include与require的区别。
答案:
require 的使用方法如require("MyRequireFile.php"); 。
这个函数通常放在PHP 程序的最前面,PHP 程序在执行前,就会先读入require 所指定引入的文件,使它变成PHP 程序网页的一部份。
常用的函数,亦可以这个方法将它引入网页中。
include 使用方法如include("MyIncludeFile.php"); 。
这个函数一般是放在流程控制的处理部分中。
PHP 程序网页在读到include 的文件时,才将它读进来。
这种方式,可以把程序执行时的流程简单化。
include()与require()的功能也基本相同(包含),但在用法上也有一些不同,include()是有条件包含函数,而require()则是无条件包含函数。
例如在下面代码中,如果变量$a为真,则将包含文件a.php:
if($a){
include("a.php");
}
而require()则和include()不同,不管$a取何值,下面的代码将把文件a.php包含进文件里:
if($a){
require("a.php");
}
require一个文件存在错误的话,那么程序就会中断执行了,并显示致命错误
include一个文件存在错误的话,那么程序不会中端,而是继续执行,并显示一个警告错误。
(2) “===”是什么?试举一个“==”是真但“===”是假的例子。
答案:“===”是既可以返回布尔值“假”,也可以返回一个不是布尔值但却可以赋与“假”值的函式,strpos() 和strrpos() 便是其中两个例子。
if (strpos("abc", "a") == true){
// 这部分永不会被执行,因为"a" 的位置是0,换算成布尔值“假”
}
if (strpos("abc", "a") === true){ // 这部份会被执行,因为“===”保证函式strpos() 的送回值不会换算成布尔值.}
第4章PHP函数
1. 写出相关PHP代码的输出结果。
(1)
function m($val){
++$val;
}
$val = 10;
m($val);
echo $val;
答案:10
(2)
function get_arr($arr){
unset($arr[0]);
}
$arr1 = array(1, 2);
get_arr($arr1);
echo count($arr1);//count个数
答案:2
(3)
function sum(...$numbers) {
$acc = 0;
foreach ($numbers as $n) {
$acc += $n;
}
return $acc;
}
echo sum(1, 2, 3, 4, 5);
答案:15
2. 写代码、编程序
(1) 编写用户定义函数is_leap,用于测试参数($year)指定的年份是否是闰年,并返回一个布尔型的值。
参数($year)的默认值是2000。
答案:
<?php
function is_leap($year){
if($year%100==0){//判断世纪年
if ($year%400==0&&$year%3200!=0){
return "世纪年".$year."是闰年!";//世纪年里的闰年
}
else{
return "世纪年".$year."不是闰年!";
}
}
else{//剩下的就是普通年了
if($year%4==0&&$year%100!=0){
return "普通年".$year."是闰年!";//普通年里的闰年
}
else {
return "普通年".$year."不是闰年!";
}
}
}
>
3. 简答题
(1) php中函数传递参数的方式有哪两种?两者有什么区别?
答案:
GET方式:url.php?id=1 得到方式$_GET['id']
POST方式:在form表单里面把action="url.php" ,然后在url.php里面用$_POST['id']去得到
第5章处理字符串
1. 写出相关PHP代码的输出结果。
(1) 假设程序代码使用UTF-8编码。
$str = "您好hello"; //汉字在utf-8里占3个
echo strlen($str);
答案:11
(2)
$arr1 = $arr2 = array("img12.png", "img10.png", "img2.png", "img1.png");
usort($arr1, "strcmp");
print_r($arr1);
答案:Array ( [0] => img1.png [1] => img10.png [2] => img12.png [3] => img2.png ) (3)
$str = "Java语言Java语言";
$str1 = "av";
echo strpos($str, $str1, 2);
答案:11
(4)
$str = "Java语言Java语言";
$str1 = "av";
echo strrpos($str, $str1, -10);
答案:1
(5)
$s = '12345';
$s[$s[1]] = '2';
echo $s;答案:12245
(6)
$search = array('A', 'B', 'C', 'D', 'E');
$replace = array('B', 'C', 'D', 'E', 'F');
$subject = 'A';
echo str_replace($search, $replace, $subject);
答案:F
(7)
$str = "Line 1\nLine 2\rLine 3\r\nLine 4\n";
$str1 = nl2br($str);
$str2 = htmlspecialchars($str1);//用实体来表示
echo $str2;
答案:Line 1<br /> Line 2<br /> Line 3<br /> Line 4<br />
(8)
$a = preg_match("/111[^abc]999/", "other111a999");//不能有a,b,c
$b = preg_match("/111[\w\D]999/", "111w111,999");
echo $a.$b;
答案:01
(9)
preg_match('/(?:red|white) (king|queen)/', 'the white queen', $result);
print_r($result);
答案:Array ( [0] => white queen [1] => queen )
(10)
$a = preg_match ('/^[a-zA-Z_]\w*$/', "^awww");//w单词字符
$b = preg_match ('/^[a-zA-Z_]\w*$/', "_123_");
echo $a.$b;
答案:01
2. 写代码、编程题
(1) 给定一个用逗号分隔一组值的字符串$str,请写php代码把每个独立的值放入一个新创建的数组$arr中。
(2) 有如下数组:
$arr = array('james', 'tom', 'symfony');
请写PHP代码将$arr数组的各元素值用逗号连接合并成一个字符串并输出。
(3) 写出一个能匹配身份证号码(18位)的正则表达式。
3. 简答题
(1) 以下代码是判断字符串中是否存在#符号,请问是否正确?若错误,请修改之。
if(strpos($str, "#")) { … }//如果是第一个找到,返回0.则是fulse,不符合,改成!=fulse
第6章MySQL与PHP
一. 根据要求写代码
1. 在MySQL监视器命令行状态下,创建一个名为mydb的数据库,数据库的默认字符集为utf8,排序规则为utf8_bin。
答案:creste database mydb character set=utf8 collate=utf8_bin
2.对数据库mydb中所有表的结构和数据进行备份,备份产生的sql脚本文件mydb.sql保存在当前目录下。
假设用户名为root,无密码。
答案:mysqldump -u root -p mydb > mysql.sql
3.假设与数据库的连接已经建立,连接对象是$mysqli。
现在请写出代码:执行查询语句"SELECT * FROM student",然后输出查询结果的行数。
答案:$result=$mysqli->query(“SELECT * FORM student”);
Echo $result->num_rows;
4. 假设下面代码已经成功执行,其中mysqli表示与数据库的连接对象:
$result = $mysqli->query("SELECT * FROM student");
现在请写代码,要求是:获取查询结果第3行的数据并放入数组$row中。
答案:$result->data_seek(2);
$row=$result->fetch_array();
5. 下面PHP代码执行一条预处理的SQL SELECT语句,并显示查询结果。
其中,$mysqli是一个已经创建的数据库连接对象。
请根据注释完善代码。
$stmt = $mysqli->stmt_init();
$sql = "select sn,password,name,gender from student where gender = ?";
$stmt->prepare($sql);
$var1 = "男";
____$stmt->bind_param(“s”,$var1);__ // 将变量$var1绑定至预处理语句中的参数
$stmt->execute();
____$stmt->bind _result($sn,$password,$name,$gender);__ // 将查询结果各列绑定至变量
while($row = $stmt->fetch()) {
echo $sn.” “.$password.” “.$name.” “.$gender.”<br />”;
}
二、简答题
1. 在PHP中,如何利用mysqli类实现与MySQL数据库的连接?
答案:
function connect() {
@ $mysqli = new mysqli('localhost', 'root', '123', 'elective_manage');
return $mysqli;
}
function executeSql($mysqli, $sql) {
$mysqli->set_charset('UTF8');
$result = $mysqli->query($sql);
return $result;
}
第7章表单与会话
一、读代码写结果
1. 有pahe1.html和page
2.php两个页面,代码如下:
page1.html:
<body>
<form action="page2.php">
Please Enter:
<input id="id1" name="c1" type="text" />
<input id="id2" name="c2" type="submit" />
</form>
</body>
page2.php:
<?php
$content1 = $_POST['c1'];
echo "content1:$content1";
>
现在page1.html页面已经打开,如果在其中的文本域中输入:true,那么按递交按钮后窗口将显示?答案:content1:
2. 运行以下代码将显示什么值?假设代码运行时的URL 是:testscript.php?c=25。
function process($c, $d = 25) {
global $e;
$retval = $c + $d - $_GET['c'] - $e;//5+25-25=5
return $retval;
}
$e = 10;//全局变量,整个文件中有效,但函数中无效!!!
echo process(5);
答案:5
二. 根据要求写代码
1. 已知$f_name是一个使用utf-8编码的字符串,请将其转换成使用gbk编码的字符串。
答案:$f_name=iconv(“utf-8”,”GBK”,$f_name);
2.假设$o_name是一个上传文件的文件名(含路径)。
使用PHP代码将该上传文件移至新的
位置。
$d_name是目标位置和文件名。
答案:move_uploafed_file................................。
三、简答题
1. 哪一个php函数可以把浏览器转向到另一个页面?请举例说明。
答案:header,header("Location: index1.php");
2. $_FILES是几维数组?第一维和第二维的索引下标分别是什么?
答案:二维数组,第一位是上传文件主键name属性值。
,第二位是。
$_FILES[‘file1’][‘error’],$_FILES[‘file1’][‘tmp_name’],
第8章使用数组
一、读代码写结果
1.
define("myvalue", "10");
$myarray[10] = "Dog";
$myarray[] = "Human";
$myarray["myvalue"] = "Cat";
$myarray["Dog"] = "Cat";
print $myarray[myvalue];
答案:Dog
2.
$myarray = array("aaa","bbb","ccc");
foreach ($myarray as $key => $value) {
$myarray[$key] = $value."-123";
}
print $myarray[1];
答案:bbb-123
3.
define("STOP_AT", 1024);
$result = array();
for($idx=1; $idx<STOP_AT; $idx*=2) {
$result[] = $idx;
}
print_r($result[8]);
答案:256
4.
$a = array("a" => "apple", "b" => "banana");
$b = array("a" => "pear", "b" => "strawberry", "c" => "cherry");
print_r(array_merge($a, $b));
答案:Array ( [a] => pear [b] => strawberry [c] => cherry )
二、根据要求写代码
1. 测试数组$arr中是否包含键为"x"的元素,若存在输出该元素的值。
Chap8.ppt----p6,p7,p8--wy稻草人。