php基础
教程: https://www.youtube.com/watch?v=Z0zx5pA9lqI&list=PLLAZ4kZ9dFpNJvT-JKogcCySuSznPpXEp&index=3
Windows Installation
https://windows.php.net/download#php-7.4
我下载的是Thread Safe版本,然后把解压后的文件夹添加到环境变量当中:
Choosing a Text Editor
教程选择了Atom编辑器。但我选择vscode或者phpstorm来编辑php代码
建立php项目之前,我们需要先启动php服务,也就是一个web server
在cmd中我们这样操作:
C:\Users\Jason>php -S localhost:4000
[Sun Jun 28 21:09:08 2020] PHP 7.4.7 Development Server (http://localhost:4000) started
这个服务器是在 C盘中用户目录下寻找可以运行的php文件的,所以我们在 jason目录下新建一个www文件夹,开始我们的php项目
在www文件夹下新建一个site.php文件.
php语言可以和HTML写在一个文件当中,PHP 脚本可以放在文档中的任何位置。PHP 脚本以 <?php 开始,以 ?> 结束:
1 | <!DOCTYPE html> |
然后我们在浏览器中输入:
http://localhost:4000/www/site.php 也就是 www文件夹之下的site.php文件,就会出现我们的HelloWorld
或者,我们在phpstorm当中配置好php环境之后,我们直接点击右上角的Chrome,就会自动在端口生成我们的网页了:
php的注释和C++一样
Hello World & Setup
echo是php的一个输出信息的语句。php语句结束的时候一定要有分号!
还有,echo中可以写任何html代码,他们都可以被渲染到浏览器当中
Writing HTML
1 |
|
当我们刷新页面内的时候,刚刚建立的 web server就会自动搜索这个文件夹下的php语句顺序执行 、渲染他们
Variables
php中的变量。
我们用$ 来声明一个变量名,不需要前面加变量的类型。
在其他地方引用的时候,我们也直接用$ + 变量名即可
1 |
|
我们也可以对变量进行覆盖,只要在第一次声明之后再声明即可。
Data Types
第一种 数据类型是 strings,也就是字符串.当我们在变量后面用单引号或双引号的时候,php就知道这是一个字符串了,不需要我们声明变量类型。
php的中数字的类型有两种:整数和 浮点数
整数:
- 整数必须有至少一个数字(0-9)
- 整数不能包含逗号或空格
- 整数不能有小数点
- 整数正负均可
- 可以用三种格式规定整数:十进制、十六进制(前缀是 0x)或八进制(前缀是 0)
浮点数:
- 浮点数是有小数点或指数形式的数字。
布尔值:是 true 或 false。
NULL 值:
特殊的 NULL 值表示变量无值。NULL 是数据类型 NULL 唯一可能的值。
NULL 值标示变量是否为空。也用于区分空字符串与空值数据库。
可以通过把值设置为 NULL,将变量清空:
数组:
数组在一个变量中存储多个值。
在下面的例子中,我们将测试不同的数组。PHP var_dump() 会返回变量的数据类型和值:
1 |
|
对象
对象是存储数据和有关如何处理数据的信息的数据类型。
在 PHP 中,必须明确地声明对象。
首先我们必须声明对象的类。对此,我们使用 class 关键词。类是包含属性和方法的结构。
然后我们在对象类中定义数据类型,然后在该类的实例中使用此数据类型:
1 |
|
Working With Strings
1 |
|
Working With Numbers
1 |
|
Getting User Input
首先我们要建一个Form。然后我们从用户中获取其输入信息
1 |
|
Building a Basic Calculator
1 | <form action="site.php" method="get"> |
我们需要注意这时候的url http://localhost:63344/www/site.php?num1=12&num2=34
我们看到num1 = 12, num2 = 34, 如果我修改url中的数字,那么 Answer: 后面的数字也会相应改变
Building a Mad Libs Game
Mad Libs Game 是一个比较像我们的故事接龙的游戏,我们获取到用户输入的一些单词,然后把它放到文章里,文章就会变得千奇百怪。
我们从表单中extract出变量
1 | <form action="site.php" method="get"> |
php
美中不足的是,在表单提交之前,这些不完整的“故事”仍然显现。在之后我们会解决这个问题
URL Parameters
URL 参数
1 | <form action="site.php" method="get"> |
当我们提交表单的时候 name的值被放到了url当中,成为了url参数。我们可以通过修改url来打印不同的信息,也可以通过textbox来进行修改打印信息
http://localhost:63344/www/site.php?name=Dave
$_GET[“name”] 仅仅获取url参数中名为 name 的信息,而其他信息,php是接受不到的
我们可以通过修改form的一些设置,让这些url参数隐藏,甚至无法修改
POST vs GET
我们有两种方法从用户那儿获取信息,一种是GET,一种是POST,接下来我们来讨论什么时候该用GET什么时候该用POST
1 | <form action="site.php" method="get"> |
当我们使用$_GET的时候,信息会做为一个url变量放在url当中,所以这显然不适合用于输入密码时的环境
那么当我们使用 $_POST 方法,会出现什么呢?
我们虽然打印除了jason,但是我们看到url并没有显示password 参数。这比刚才的方式安全
大多数情况下我们会用POST,GET主要用于需要URLparameter的情况之下。
Arrays
1 | $friends = array("Kevin","Karen","Oscar","Jim",1,true); |
php数组可以放下各个类型的 数据,通过count可以计算数组当中的数据个数。这里虽然
Using Checkboxes
1 | <form action="site.php" method="post"> |
Associative Arrays 关联数组
什么数组可以用来存储键值对呢?比如我想存储学生的姓名和他的成绩。
1 | <body> |
遍历关联数组
遍历并打印关联数组中的所有值,您可以使用 foreach 循环,如下所示:
1 |
|
Functions
PHP 函数准则:
- 函数的名称应该提示出它的功能
- 函数名称以字母或下划线开头(不能以数字开头)
1 |
|
Return Statements
如需让函数返回一个值,请使用 return 语句。
1 |
|
求立方的函数
1 |
|
If Statements
PHP 条件语句
当您编写代码时,您常常需要为不同的判断执行不同的动作。您可以在代码中使用条件语句来完成此任务。
在 PHP 中,提供了下列条件语句:
- if 语句 - 在条件成立时执行代码
- if…else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码
- if…else if….else 语句 - 在若干条件之一成立时执行一个代码块
if 语句
if 语句用于仅当指定条件成立时执行代码。
语法
if (条件)
{
条件成立时要执行的代码;
}
如果当前时间小于 20,下面的实例将输出 “Have a good day!”:
1 |
|
if…else 语句
在条件成立时执行一块代码,条件不成立时执行另一块代码,请使用 if….else 语句。
该语句的含义为:当条件为真时,执行条件成立时的代码;如果条件为假,则执行条件不成立时的代码,语法如下:
语法
if (条件)
{
条件成立时执行的代码;
}
else
{
条件不成立时执行的代码;
}
如果当前时间小于 20,下面的实例将输出 “Have a good day!”,否则输出 “Have a good night!”:
1 |
|
if…else if….else 语句
在若干条件之一成立时执行一个代码块,请使用 if….else if…else 语句
语法
if (条件)
{
if 条件成立时执行的代码;
}
else if (条件)
{
elseif条件成立时执行的代码;
}
else
{
条件不成立时执行的代码;
}
1 |
|
Building a Better Calculator
step = “any” 代表着文本框内可以输入任意实数,否则只能输入小数。如果要限定小数位数,可以把step 设置为0.1, 0.01,0.001 这样来代表几位小数
1 | <body> |
Switch Statements
如果希望有选择地执行若干代码块之一,请使用 switch 语句。
语法
switch (n)
{
case label1:
如果 n=label1,此处代码将执行;
break;
case label2:
如果 n=label2,此处代码将执行;
break;
default:
如果 n 既不等于 label1 也不等于 label2,此处代码将执行;
}
工作原理:首先对一个简单的表达式 n(通常是变量)进行一次计算。将表达式的值与结构中每个 case 的值进行比较。如果存在匹配,则执行与 case 关联的代码。代码执行后,使用 break 来阻止代码跳入下一个 case 中继续执行。default 语句用于不存在匹配(即没有 case 为真)时执行。
1 |
|
While Loops
while 循环将重复执行代码块,直到指定的条件不成立。
语法
while (条件)
{
要执行的代码;
}
实例
下面的实例首先设置变量 i 的值为 1 ($i=1;)。
然后,只要 i 小于或者等于 5,while 循环将继续运行。循环每运行一次,i 就会递增 1:
1 | <html> |
输出:
1 | The number is 1 |
do…while 语句
do…while 语句会至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环。
语法
do
{
要执行的代码;
}
while (条件);
实例
下面的实例首先设置变量 i 的值为 1 ($i=1;)。
然后,开始 do…while 循环。循环将变量 i 的值递增 1,然后输出。先检查条件(i 小于或者等于 5),只要 i 小于或者等于 5,循环将继续运行:
1 | <html> |
For Loops
for循环
循环执行代码块指定的次数,或者当指定的条件为真时循环执行代码块。
for 循环用于您预先知道脚本需要运行的次数的情况。
for (初始值; 条件; 增量)
{
要执行的代码;
}
参数:
- 初始值:主要是初始化一个变量值,用于设置一个计数器(但可以是任何在循环的开始被执行一次的代码)。
- 条件:循环执行的限制条件。如果为 TRUE,则循环继续。如果为 FALSE,则循环结束。
- 增量:主要用于递增计数器(但可以是任何在循环的结束被执行的代码)。
注释:上面的初始值和增量参数可为空,或者有多个表达式(用逗号分隔)。
实例
下面的实例定义一个初始值为 i=1 的循环。只要变量 i 小于或者等于 5,循环将继续运行。循环每运行一次,变量 i 就会递增 1:
1 | <html> |
foreach 循环
foreach 循环用于遍历数组,它根据数组中每个元素来循环代码块。
foreach ($array as $value)
{
要执行代码;
}
每进行一次循环,当前数组元素的值就会被赋值给 $value 变量(数组指针会逐一地移动),在进行下一次循环时,您将看到数组中的下一个值。
实例
下面的实例演示了一个输出给定数组的值的循环:
1 | <html> |
注意:foreach
仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量,将发出错误信息。