特别鸣谢:@NLER提供雨课堂数据
(未完待续,请持续关注此板块)
【计科三四】雪课堂PHP期末模拟题:https://ks.wjx.top/vm/tUAmjxq.aspx#
【计科一二】PHP第一章练习题 https://ks.wjx.top/vm/QnjHad4.aspx#
【计科一二】PHP第二章练习题 https://ks.wjx.top/vm/h2FvEVI.aspx#
【计科一二】PHP第三章练习题 https://ks.wjx.top/vm/mDvpYRP.aspx#
【计科一二】PHP第四章练习题 https://ks.wjx.top/vm/Pj7n0AW.aspx#
【计科一二】PHP第五章练习题 https://ks.wjx.top/vm/wBNmk7o.aspx#
【计科一二】PHP第六章练习题 https://ks.wjx.top/vm/tU0jnyJ.aspx#
【计科一二】PHP第七章练习题 https://ks.wjx.top/vm/eqtTMy8.aspx#
以下内容都是博主根据上面的练习题逆向整理的
PHP开发环境有:Notepad++、NetBeans、Zend Studio、PhpStorm、Visual Studio Code
PHP可以在 windows环境上跑,也可以在linux环境下运行
PHP是基于B/S架构的脚本语言,运行于服务器端,不能通过浏览器运行
Apache 默认监听的端口号是 80
安装Apache 时,conf目录
是Apache服务器的配置目录
httpd.conf
httpd-vhosts.conf
等将Apache解压后,需要配置安装路径才可以使用
(安装完还不能直接使用)。
Apache默认是不支持PHP运行的,我们可以通过在Apache的配置文件中加载PHP模块功能。
1、加载模块
LoadModule php7_module “c:/web/php7.4/php7apache2_4.dll”
2、指定php的文件类型
AddType application/x-httpd-php .php
3、指定配置目录
PHPIniDir “c:/web/php7”
配置安装路径
ServerRoot
配置项用于配置Apache的安装目录
使用Notepad++编辑器打开Apache的配置文件“htdocs\httpd.conf”,执行文本替换,将原来的“c:/Apache24”全部替换为“c:/web/apache2.4”。
配置服务器域名
ServerName
配置项用于配置Apache的服务器域名
打开
httpd.conf
,在里面搜索“ServerName”,找到下面一行配置(如下面的代码块)。下述代码开头的“#”表示该行是注释文本,应删去“#”使其生效,如下所示。#ServerName www.example.com:80
上述配置中,“www.example.com”是一个示例域名,若不需要指定域名,也可以更改为本机地址,如“127.0.0.1”或“localhost”。
ServerName www.example.com:80
其他配置项
DocumentRoot
指令用来设置httpd提供服务的目录。即你所在项目入口处的文件夹。
Deny from all
表示拒绝所有的访问
Allow from all
表示允许所有的访问
cd C:\web\apache2.4\bin
httpd.exe -k install
在命令提示符下输入net start apache2.4
命令来启动apache2.4服务
通过编辑apache配置文件httpd.conf,找到AddType application/x-httpd-php 进行修改,修改为:
AddType application/x-httpd-php .php .jsp
,这样PHP就可以执行扩展名为“.jsp”的程序。
MySQL 的默认端口:3306
当需要使用PHP操作MySQL数据库时,需要在php.ini文件中开启的扩展为extension=php_mysqli.dll
查看数据库:SHOW DATABASES; (查看已有的数据库)
创建数据库:CREATE DATABASE `db`; (创建一个名称为db的数据库)
选择数据库:USE `db`; (选择数据库db进行操作)
删除数据库:`DROP DATABASE `db`; (删除数据库db)
在查询SQL语句中LIKE
或NOT LIKE
用于模糊查询,%
表示一个或多个字符
PHP 支持引用赋值,使用
$var = &$othervar;
语法。
引用赋值意味着两个变量指向了同一个数据,没有拷贝任何东西。
示例:
$a = 10;
$b = &$a;
$b = 20;
echo $a. '--'. $b;
// 运行结果:20--20
?>
foreach
循环
$info = ['id' => 1, 'Jac', 'age' => 18];
foreach ($info as $k => $v) {
echo $k . ': ' . $v . ' ';
}
// 运行结果:id: 1 0: Jac age: 18
&&
||
and
or
的区别优先级从高到低:&&
> ||
> and
>> or
举个例子:
$a = true;
$b = false;
$c = true;
var_dump($a && $b || $c); // bool(true)
var_dump($a and $b || $c); // bool(false)
var_dump($a || $b && $c); // bool(true)
var_dump($a or $b && $c); // bool(true)
var_dump(true && false); // bool(false)
var_dump(true and false); // bool(true)
?>
在PHP中,round()、floor()、ceil()都是用于处理数字的函数,它们的主要区别如下:
总的来说,round()函数在处理小数时比较精确,而floor()和ceil()函数主要用于处理需要向下或向上取整的情况。
在 PHP 中,可变变量是一种非常独特的特性,它允许您动态地为变量赋值,并且通过对变量名进行操作,来访问和修改该变量的值。
可变变量的语法是在变量名前面加上两个美元符号($$
)。例如,假设您有一个名为$var
的变量,您可以创建一个可变变量,以便它的名称由另一个变量$var1
指定:
$var = 'Hello World!';
$var1 = 'var';
echo $$var1; // Hello World!
这将输出 ‘Hello World!’,因为可变变量$$var1
实际上是$var
。
可变变量在某些情况下非常有用,例如在使用 关联数组
时,您可以动态地为数组项赋值:
$fruit = 'apple';
$$fruit = 5;
echo $apple; // 5
这将输出 5,因为通过可变变量,我们为数组项 $apple
赋值为5。
需要注意,可变变量在某些情况下可能会使您的代码更难以阅读和维护,因此应该谨慎使用。
在 PHP 中,可以使用点(.)运算符来拼接字符串。
例如,如果要拼接两个字符串 $str1 和 $str2,可以使用以下语法:
$newstr = $str1 . $str2;
也可以使用复合赋值运算符 .= 来将另一个字符串添加到已有字符串的末尾:
$str1 = "hello";
$str1 .= " world";
// $str1 现在为 "hello world"
另外,在 PHP 5.6+ 版本中,还可以使用双引号字符串插值来拼接字符串。例如:
$name = "John";
echo "My name is $name"; // 输出 "My name is John"
上述例子中,在字符串中使用变量名 $name 就会自动替换成变量的值。这种方式更简便快捷,使用起来更加方便。
在 PHP 中,全局变量和局部变量的使用和其他编程语言类似。
全局变量是定义在函数外部的变量,可以在脚本中的任何位置访问和使用。例如:
$global_var = "Hello";
function print_global_var(){
global $global_var; // 必须使用 global 关键字声明外部变量
echo $global_var;
}
print_global_var(); // 输出 "Hello"
需要注意的是,在函数中使用全局变量时,必须通过 global 关键字声明变量,否则该变量会被认为是局部变量。
局部变量是定义在函数内部的变量,只能在该函数范围内访问和使用。例如:
function print_local_var(){
$local_var = "World";
echo $local_var;
}
print_local_var(); // 输出 "World"
echo $local_var; // 报错:Undefined variable: local_var
需要注意的是,局部变量的作用域只限于该函数,函数执行结束后,局部变量的值就会被销毁。而全局变量的作用域则为整个脚本,除非显式销毁变量或脚本执行结束,否则全局变量的值会一直存在。
因此,在编写 PHP 代码时,应谨慎使用全局变量,以防止意外修改变量值或引起其他问题。而对于需要在多个函数或页面中使用的变量,可以考虑使用常量或 session 变量来实现。
PHP的关联数组是一种特殊的数组类型,其中每个元素都有一个关联的键来标识它。在关联数组中,键可以是字符串或整数,而不仅仅是数字。这使得关联数组更灵活,因为您可以使用具有意义的键来组织和访问数据。
创建关联数组时,需要使用array()函数,并将每个键和对应的值作为参数传递。下面是一个示例:
$person = array("name" => "John", "age" => 30, "city" => "New York");
在上面的示例中,我们创建了一个名为$person的关联数组,其中包含三个元素:name、age和city。每个元素都有一个对应的键,分别为"name"、“age"和"city”。
要访问关联数组中的元素,可以使用其键作为索引。例如,要输出$person数组中的名称,可以使用以下代码:
echo $person["name"];
这将输出"John",因为"name"键对应的值是"John"。
您还可以使用foreach循环遍历关联数组中的所有元素。例如,以下代码将遍历$person数组中的所有元素,并输出它们的键和值:
foreach ($person as $key => $value) {
echo $key . ": " . $value . "
";
}
这将输出以下内容:
name: John
age: 30
city: New York
总的来说,关联数组是PHP中一种非常有用的数据类型,可以让您使用有意义的键来组织和访问数据。
PHP中的unset()函数用于销毁指定变量,使其不再存在于内存中。当使用unset()函数删除一个变量时,PHP会回收变量的内存空间,从而释放内存并提高程序的性能。
此外,unset()函数不仅可以用于删除变量,还可以用于删除数组中的元素,例如:
$fruit = array('apple', 'orange', 'banana');
unset($fruit[1]); // 删除数组中的第二个元素('orange')
print_r($fruit); // 输出:Array([0] => apple [2] => banana)
需要注意的是,unset()函数只能删除变量本身,而不能删除变量指向的值。如果想要清空变量的值,可以使用赋值为null的方式,例如:
$name = 'John';
$name = null; // 清空$name变量的值
$file_name = "apple.jpg";
$file_array = explode(".", $file_name);
$file_ext = end($file_array);
echo $file_ext;
// 运行结果:jpg
itcast_info
limit 0,100可以查询出前100条数据以上是PHP操作MySQL数据库的主要知识点总结。在实际应用中,需要根据不同的需求,灵活运用这些知识点进行开发。
$_GET
、$_POST
、$_SERVER
、$_COOKIE
、$_SESSION
、$_REQUEST
等是PHP预定义好的变量,可以在脚本的任何位置使用以上是PHP会话管理和HTTP协议相关的主要知识点总结,对于实际开发中的应用,需要根据不同的需求灵活运用这些知识点进行开发和维护。
回答每一个问题,如下:
在PHP的类中,提供了三个访问修饰符 公有 public 、保护protected 、私有private。 答案:对。
在类中可以使用 self 关键字表示当前的对象。 答案:错。self是在类内调用静态成员的方式。
在PHP类中可以使用final关键字禁止继承和重写。 答案:对。
类的继承是指在一个现有类的基础上去构建一个新类,构建出的新类称为子类,现有类称为父类。 答案:对。
在PHP中,可以通过 abstract 关键字声明抽象类, 抽象类中可以有非抽象方法、成员属性和常量。 答案:对。
spl_autoload_register()可以实现类库的自动加载。 答案:对。
保证一个类仅有一个实例,这句话描述的是单例模式。 答案:对。
在PHP语言中,抽象类不能被实例化。 答案:对。
在子类中重写的方法需要和父类被重写的方法具有相同的方法名、参数,而不仅仅是相同的方法名,如果想要调用父类中被重写的方法,就需要使用parent关键字, parent关键字用于访问父类的成员。由于parent关键字引用的是一个类而不是一个方法,因此需要使用范围解析操作符(::)。子类方法重写父类方法时,访问权限不能小于父类方法的访问权限。 答案:对。
在创建对象时,如果不需要传递参数,则可以省略类名后面的括号。 答案:对。
面向对象的三大特征是封装、多态、继承,其中继承的实现非常简单,在编写一个类文件的时候使用extends关键字来继承另一个类即可,可以通过重写来实现多态效果。 答案:对。
在类中声明的成员变量被称为成员属性,声明的方法被称为成员方法。 答案:对。
接口不能直接被实例化,即不能使用new关键字创建接口对象。PHP提供implements关键字用于实现接口。 答案:对。
如果抽象类中所有的成员方法都是抽象的,则可以将这个类定义为接口,其语法格式如下: interface 接口名{ // 成员 常量 // 抽象方法 } 其中,关键字interface用来定义接口。接口中的成员属性只能是使用const修饰的常量,不能是变量,而抽象类中可以定义成员变量。接口中所有的方法都是抽象方法,因此方法名前就不需要使用abstract关键字修饰了。 答案:对。
这个符号“::”被称为静态访问符,访问静态成员都需要通过这个操作符来完成。 答案:对。
self是在类内调用静态成员的方式,而类名在类内和类外都可以调用。 答案:错。类名在类外可以调用,在类内需要使用self。
如果一个类继承了某个抽象类,则它必须实现该类的所有抽象方法。 答案:对。
抽象类不能直接被实例化,即不能使用new关键字创建抽象类对象,必须先继承该抽象类,然后再实例化子类。抽象类中至少要包含一个抽象方法。如果类方法被声明为抽象的,那么其中就不能包括具体的功能实现,即只有声明没有方法体,不能被调用。 答案:对。
子类在继承父类时,会继承父类的所有公共成员和受保护的成员,而不会继承父类的私有成员。 答案:对。
类中定义的__construct()表示构造方法,它会在类实例化对象时自动调用,用于初始化类中的成员。在一个对象被销毁时,被自动调用的方法是析构方法__destruct()。 答案:对。
类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,而对一类对象的抽象就是类。 答案:对。
在类中声明静态成员的关键字是static。
在PHP中,可以创建对象的关键字是 new。
在类中,属性是通过成员变量实现的,而行为是通过成员函数(又称为方法)实现的。定义类的语法格式:类名【成员变量;成员方法;】。
对象复制可以通过clone关键字来完成。
PDO (PHP Data Object) 是一种用于访问数据库的扩展,可以统一不同数据库的访问接口,实现代码的可移植性。其核心类是PDO类,使用方式分为面向对象和面向过程两种语法形式。
PDO的数据源(DSN)包括PDO驱动名、主机名、端口号、数据库名称等信息。PDO处理结果集的方法包括fetch()、fetchColumn()和fetchAll(),其中fetch()方法用于获取下一行数据,需与while配合使用以获取所有数据;fetchColumn()方法以字符串方式返回指定列的值;fetchAll()方法以数组形式返回所有行。
PDO执行SQL语句有三种方法:exec()方法主要用于没有结果集合返回的操作,如INSERT、UPDATE、DELETE等操作;query()方法主要用于有记录结果返回的操作,特别是SELECT操作;预处理语句可以解决重复分析和编译的问题,提高运行速度。
PDO错误处理模式包括ERRMODE_ERROR、ERRMODE_SILENT、ERRMODE_WARNING和ERRMODE_EXCEPTION;errorCode()和errorInfo()方法用于检查语句和数据库对象是否有错误。在使用PDO的预处理语句时,bindParam()方法可以将变量参数绑定到占位符上,execute()方法用于执行预处理语句。
PDO的缺点是维护困难和可移植性差,但其解决了不同数据库扩展的应用程序接口互不兼容的问题。
重点知识点:PDO的数据源(DSN)、处理结果集的方法、预处理语句、执行SQL语句的三种方法、错误处理模式。