php基础

php基础

教程: https://www.youtube.com/watch?v=Z0zx5pA9lqI&list=PLLAZ4kZ9dFpNJvT-JKogcCySuSznPpXEp&index=3

配合教程: https://www.w3school.com.cn/php/php_datatypes.asp

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>

<?php
echo("Hello World");
?>

</body>
</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
2
3
4
5
<?php
echo "<h1>Jason's Site</h1>";
echo "<hr>";
echo "<p>This is my site</p>";
?>

当我们刷新页面内的时候,刚刚建立的 web server就会自动搜索这个文件夹下的php语句顺序执行 、渲染他们

Variables

php中的变量。

我们用$ 来声明一个变量名,不需要前面加变量的类型。

在其他地方引用的时候,我们也直接用$ + 变量名即可

1
2
3
4
5
6
<?php
$characterName = "John";
$characterAge = 35;
echo "There once was a man named $characterName <br>";
echo "He was $characterAge years old<br>";
?>

我们也可以对变量进行覆盖,只要在第一次声明之后再声明即可。

Data Types

第一种 数据类型是 strings,也就是字符串.当我们在变量后面用单引号或双引号的时候,php就知道这是一个字符串了,不需要我们声明变量类型。

php的中数字的类型有两种:整数和 浮点数

整数:

  • 整数必须有至少一个数字(0-9)
  • 整数不能包含逗号或空格
  • 整数不能有小数点
  • 整数正负均可
  • 可以用三种格式规定整数:十进制、十六进制(前缀是 0x)或八进制(前缀是 0)

浮点数:

  • 浮点数是有小数点或指数形式的数字。

布尔值:是 true 或 false。

NULL 值:

特殊的 NULL 值表示变量无值。NULL 是数据类型 NULL 唯一可能的值。

NULL 值标示变量是否为空。也用于区分空字符串与空值数据库。

可以通过把值设置为 NULL,将变量清空:

数组:

数组在一个变量中存储多个值。

在下面的例子中,我们将测试不同的数组。PHP var_dump() 会返回变量的数据类型和值:

1
2
3
4
<?php
$cars=array("Volvo","BMW","SAAB");
var_dump($cars);
?>

对象

对象是存储数据和有关如何处理数据的信息的数据类型。

在 PHP 中,必须明确地声明对象。

首先我们必须声明对象的类。对此,我们使用 class 关键词。类是包含属性和方法的结构。

然后我们在对象类中定义数据类型,然后在该类的实例中使用此数据类型:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
class Car
{
var $color;
function Car($color="green") {
$this->color = $color;
}
function what_color() {
return $this->color;
}
}
?>

Working With Strings

1
2
3
4
5
6
7
8
9
10
11
<?php
$phrase = "Jason";
echo strtolower($phrase);
echo strtoupper($phrase);
echo $phrase[0];
echo "Jason"[0];
//第一个参数是寻找目标字符串中被替换的字符串,第二个参数是替换后的字符串,第三个是目标字符串。
echo str_replace("Jason","Ball",$phrase);
//第一个参数是目标字符串,第二个参数是开始截取子串的位置,第三个字符串是可选的,为子串的长度
echo substr($phrase, 3,1);
?>

Working With Numbers

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$num = 10;
$num++;
$num--;
$num+=26;
echo abs(-10);
echo sqrt(144);
echo max(12,387);
echo min(12,387);
echo floor(2.8); //取最大整数下界
echo 40;
?>

Getting User Input

首先我们要建一个Form。然后我们从用户中获取其输入信息

1
2
3
4
5
6
7
8
9
10
11

<form action="site.php" method="get">
Name:<input type="text" name = "username" placeholder="Yourname">
<br>
Age:<input type="text" name = "userage" placeholder="Yourage" >
<br>
<input type="submit">
</form>
Your name is<?php echo $_GET["username"] ?>
<br>
Your age is <?php echo $_GET["userage"]?>

Building a Basic Calculator

1
2
3
4
5
6
7
8
<form action="site.php" method="get">
<input type="number" name="num1">
<br>
<input type="number" name="num2">
<br>
<input type="submit">
</form>
Answer: <?php echo $_GET["num1"] + $_GET["num2"] ?>

我们需要注意这时候的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
2
3
4
5
6
7
8
9
10
11
12
13
14
<form action="site.php" method="get">
Color: <input type="text" name="color"><br>
Plural Noun: <input type="text" name="pluralNoun"><br>
Celebrity: <input type="text" name="celebrity"><br>
<input type="submit">
</form>
<?php
$color = $_GET["color"];
$pluralNoun = $_GET["pluralNoun"];
$celebrity = $_GET["celebrity"];
echo "Roses are $color <br>";
echo "$pluralNoun are are blue<br>";
echo "I love $celebrity <br>"
?>

php

美中不足的是,在表单提交之前,这些不完整的“故事”仍然显现。在之后我们会解决这个问题

URL Parameters

URL 参数

1
2
3
4
5
6
7
<form action="site.php" method="get">
Name: <input type="text" name="name"><br>
<input type="submit">
</form>
<?php
echo $_GET["name"];
?>

当我们提交表单的时候 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
2
3
4
5
6
7
<form action="site.php" method="get">
Name: <input type="text" name="name"><br>
<input type="submit">
</form>
<?php
echo $_GET["name"];
?>

当我们使用$_GET的时候,信息会做为一个url变量放在url当中,所以这显然不适合用于输入密码时的环境

那么当我们使用 $_POST 方法,会出现什么呢?

我们虽然打印除了jason,但是我们看到url并没有显示password 参数。这比刚才的方式安全

大多数情况下我们会用POST,GET主要用于需要URLparameter的情况之下。

Arrays

1
2
3
$friends = array("Kevin","Karen","Oscar","Jim",1,true);
$friends[10] = "Dwight";
echo count($friends);

php数组可以放下各个类型的 数据,通过count可以计算数组当中的数据个数。这里虽然

Using Checkboxes

1
2
3
4
5
6
7
8
9
10
<form action="site.php" method="post">
Apples: <input type="checkbox" name = "fruits[]" value="apples"><br>
Oranges: <input type="checkbox" name = "fruits[]" value="oranges"><br>
Pears: <input type="checkbox" name = "fruits[]" value="pears"><br>
<input type="submit">
</form>
<?php
$fruits = $_POST["fruits"];
echo $fruits[0];
?>

Associative Arrays 关联数组

什么数组可以用来存储键值对呢?比如我想存储学生的姓名和他的成绩。

1
2
3
4
5
6
7
8
9
10
<body>
<form action="site.php" method="post">
<input type="text" name = "student">
<input type="submit">
</form>
<?php
$grades = array("Jim"=>"A+","Pam"=>"B-","Oscar"=>"C+");
echo $grades[$_POST["student"]];
?>
</body>

遍历关联数组

遍历并打印关联数组中的所有值,您可以使用 foreach 循环,如下所示:

1
2
3
4
5
6
7
8
9
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>

Functions

PHP 函数准则:

  • 函数的名称应该提示出它的功能
  • 函数名称以字母或下划线开头(不能以数字开头)
1
2
3
4
5
6
7
8
<?php
function sayHi($name,$age){
echo "Hello $name ,you are $age<br>";
}
sayHi("Jason",40);
sayHi("Tom",13);
sayHi("Mike",90);
?>

Return Statements

如需让函数返回一个值,请使用 return 语句。

1
2
3
4
5
6
7
8
<?php
function add($x,$y)
{
$total=$x+$y;
return $total;
}
echo "1 + 16 = " . add(1,16);
?>

求立方的函数

1
2
3
4
5
6
7
<?php
function cube($num){
return $num*$num*$num;
}
echo = cube(4);

?>

If Statements

PHP 条件语句

当您编写代码时,您常常需要为不同的判断执行不同的动作。您可以在代码中使用条件语句来完成此任务。

在 PHP 中,提供了下列条件语句:

  • if 语句 - 在条件成立时执行代码
  • if…else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码
  • if…else if….else 语句 - 在若干条件之一成立时执行一个代码块
if 语句

if 语句用于仅当指定条件成立时执行代码。

语法
if (条件)
{
条件成立时要执行的代码;
}
如果当前时间小于 20,下面的实例将输出 “Have a good day!”:

1
2
3
4
5
6
7
<?php
$t=date("H");
if ($t<"20")
{
echo "Have a good day!";
}
?>
if…else 语句

在条件成立时执行一块代码,条件不成立时执行另一块代码,请使用 if….else 语句。

该语句的含义为:当条件为真时,执行条件成立时的代码;如果条件为假,则执行条件不成立时的代码,语法如下:

语法
if (条件)
{
条件成立时执行的代码;
}
else
{
条件不成立时执行的代码;
}

如果当前时间小于 20,下面的实例将输出 “Have a good day!”,否则输出 “Have a good night!”:

1
2
3
4
5
6
7
8
9
10
11
<?php
$t=date("H");
if ($t<"20")
{
echo "Have a good day!";
}
else
{
echo "Have a good night!";
}
?>
if…else if….else 语句

在若干条件之一成立时执行一个代码块,请使用 if….else if…else 语句

语法
if (条件)
{
if 条件成立时执行的代码;
}
else if (条件)
{
elseif条件成立时执行的代码;
}
else
{
条件不成立时执行的代码;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$t=date("H");
if ($t<"10")
{
echo "Have a good morning!";
}
else if ($t<"20")
{
echo "Have a good day!";
}
else
{
echo "Have a good night!";
}
?>

Building a Better Calculator

step = “any” 代表着文本框内可以输入任意实数,否则只能输入小数。如果要限定小数位数,可以把step 设置为0.1, 0.01,0.001 这样来代表几位小数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<body>
<form action="site.php" method="post">
First Num:<input type="number" step="any" name="num1"><br>
OP: <input type="textbox" name="op"><br>
Seconde Num:<input type="number" step="any" name="num2"><br>
<input type="number">
</form>
<?php
$num1 = $_POST["num1"];
$num2 = $_POST["num2"];
$op = $_POST["op"];
if($op == "+"){
echo $num1+$num2;
}elseif($op == "-"){
echo $num1-$num2;
}elseif ($op == "/"&&$num2!=0){
echo $num1/$num2;
}elseif ($op=="*"){
echo $num1*$num2;
}else{
echo "Invalid Operator and Num";
}

?>
</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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$favcolor="red";
switch ($favcolor)
{
case "red":
echo "Your favorite color is red!";
break;
case "blue":
echo "Your favorite color is blue!";
break;
case "green":
echo "Your favorite color is green!";
break;
default:
echo "Your favorite color is neither red, blue, or green!";
}
?>

While Loops

while 循环将重复执行代码块,直到指定的条件不成立。

语法

while (条件)
{
要执行的代码;
}

实例

下面的实例首先设置变量 i 的值为 1 ($i=1;)。

然后,只要 i 小于或者等于 5,while 循环将继续运行。循环每运行一次,i 就会递增 1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<html>
<body>

<?php
$i=1;
while($i<=5)
{
echo "The number is " . $i . "<br>";
$i++;
}
?>

</body>
</html>

输出:

1
2
3
4
5
The number is 1
The number is 2
The number is 3
The number is 4
The number is 5

do…while 语句

do…while 语句会至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环。

语法

do
{
要执行的代码;
}
while (
条件);

实例

下面的实例首先设置变量 i 的值为 1 ($i=1;)。

然后,开始 do…while 循环。循环将变量 i 的值递增 1,然后输出。先检查条件(i 小于或者等于 5),只要 i 小于或者等于 5,循环将继续运行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
<body>

<?php
$i=1;
do
{
$i++;
echo "The number is " . $i . "<br>";
}
while ($i<=5);
?>

</body>
</html>

For Loops

for循环

循环执行代码块指定的次数,或者当指定的条件为真时循环执行代码块。

for 循环用于您预先知道脚本需要运行的次数的情况。

for (初始值; 条件; 增量)
{
要执行的代码;
}

参数:

  • 初始值:主要是初始化一个变量值,用于设置一个计数器(但可以是任何在循环的开始被执行一次的代码)。
  • 条件:循环执行的限制条件。如果为 TRUE,则循环继续。如果为 FALSE,则循环结束。
  • 增量:主要用于递增计数器(但可以是任何在循环的结束被执行的代码)。

注释:上面的初始值增量参数可为空,或者有多个表达式(用逗号分隔)。

实例

下面的实例定义一个初始值为 i=1 的循环。只要变量 i 小于或者等于 5,循环将继续运行。循环每运行一次,变量 i 就会递增 1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 <html>
<body>

<?php
for ($i=1; $i<=5; $i++)
{
echo "The number is " . $i . "<br>";
}
?>

</body>
</html>
输出:

The number is 1
The number is 2
The number is 3
The number is 4
The number is 5

foreach 循环

foreach 循环用于遍历数组,它根据数组中每个元素来循环代码块。

foreach ($array as $value)
{
要执行代码;
}

每进行一次循环,当前数组元素的值就会被赋值给 $value 变量(数组指针会逐一地移动),在进行下一次循环时,您将看到数组中的下一个值。

实例

下面的实例演示了一个输出给定数组的值的循环:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<html>
<body>

<?php
$x=array("one","two","three");
foreach ($x as $value)
{
echo $value . "<br>";
}
?>

</body>
</html>

输出:
one
two
three

注意:foreach

仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量,将发出错误信息。

Comments

Including HTML

Include: PHP

Classes & Objects

Constructors

Object Functions

Getters & Setters

Inheritance

-------------本文结束,感谢您的阅读-------------