PHP笔记

PHP(PHP: Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法学习了C语言,吸纳Java和Perl多个语言的特色发展出自己的特色语法,并根据它们的长项持续改进提升自己,例如java的面向对象编程,该语言当初创建的主要目标是让开发人员快速编写出优质的web网站。
以下笔记学习记录在https://www.w3school.com.cn/学习

echo 输出文本

1
2
3
4
<?php
echo "我的第一段 PHP 脚本!";
?> //在html中写会在页面中打印出”我的第一段 PHP 脚本!“

PHP echo 和 print 语句

echo 和 print 之间的差异:

  • echo - 能够输出一个以上的字符串
  • print - 只能输出一个字符串,并始终返回 1

变量

PHP 变量规则:

  • 变量以 $ 符号开头,其后是变量的名称 如$x
  • 变量名称必须以字母或下划线开头
  • 变量名称不能以数字开头
  • 变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)
  • 变量名称对大小写敏感($y 与 $Y 是两个不同的变量)
  • PHP无需任何创建变量的命令,变量会在首次为其赋值时创建

PHP 变量作用域

在 PHP 中,可以在脚本的任意位置对变量进行声明。

变量的作用域指的是变量能够被引用/使用的那部分脚本。

PHP 有三种不同的变量作用域:3个作用域不能互相调用其中的函数

  • local(局部)

  • global(全局)

  • static(静态)

    如果想要在局部域(如函数中)可以使用global关键词调用

1
global $x,$y;   //调用全局变量中的$x,$y这2个函数
  • 也可以使用**$GLOBALS[‘要调用的全局变量’]**这个内置数组,这个数组中储存了所以的全局变量。

  • static静态变量 每次调用函数时都能记住上一次的值,可以实现累加的效果

数据类型

  1. 字符串(String):用引号括起来的一串字符,例如:”Hello, World!”。
  2. 整数(Integer):表示整数值,例如:42。
  3. 浮点数(Float):表示带有小数部分的数值,例如:3.14。
  4. 布尔值(Boolean):表示逻辑值,可以是 true 或 false。
  5. 数组(Array):表示一组有序的数据集合,可以包含不同类型的元素。
  6. 对象(Object):表示具有属性和方法的自定义数据结构。
  7. NULL:表示一个空值,即没有任何值。

var_dump() 会返回变量的数据类型和值(会自动转换为10进制)
$this是PHP中的特殊变量,只能在类中使用它在类的方法内部自动引用当前对象的实例,以便你可以操作该对象的成员。

常量

常量是单个值的标识符(名称)。在脚本中无法改变该值。

有效的常量名以字符或下划线开头(常量名称前面没有 $ 符号)。

注释:与变量不同,常量贯穿整个脚本是自动全局的。

运算符

PHP 字符串运算符

运算符 名称 例子 结果 显示结果
. 串接 $txt1 = “Hello” $txt2 = $txt1 . “ world!” 现在 $txt2 包含 “Hello world!” Hello world!
.= 串接赋值 $txt1 = “Hello” $txt1 .= “ world!” 现在 $txt1 包含 “Hello world!” Hello world!

PHP 递增/递减运算符

运算符 名称 描述 显示结果
++$x 前递增 $x 加一递增,然后返回 $x
$x++ 后递增 返回 $x,然后 $x 加一递增
–$x 前递减 $x 减一递减,然后返回 $x
$x– 后递减 返回 $x,然后 $x 减一递减

PHP 比较运算符

PHP 比较运算符用于比较两个值(数字或字符串):

运算符 名称 例子 结果 显示结果
== 等于 $x == $y 如果 $x 等于 $y,则返回 true。
=== 全等(完全相同) $x === $y 如果 $x 等于 $y,且它们类型相同,则返回 true。
!= 不等于 $x != $y 如果 $x 不等于 $y,则返回 true。
<> 不等于 $x <> $y 如果 $x 不等于 $y,则返回 true。
!== 不全等(完全不同) $x !== $y 如果 $x 不等于 $y,或它们类型不相同,则返回 true。
> 大于 $x > $y 如果 $x 大于 $y,则返回 true。
< 小于 $x < $y 如果 $x 小于 $y,则返回 true。
>= 大于或等于 $x >= $y 如果 $x 大于或者等于 $y,则返回 true.
<= 小于或等于 $x <= $y 如果 $x 小于或者等于 $y,则返回 true。

PHP 逻辑运算符

运算符 名称 例子 结果 显示结果
and $x and $y 如果 $x 和 $y 都为 true,则返回 true。
or $x or $y 如果 $x 和 $y 至少有一个为 true,则返回 true。
xor 异或 $x xor $y 如果 $x 和 $y 有且仅有一个为 true,则返回 true。
&& $x && $y 如果 $x 和 $y 都为 true,则返回 true。
|| $x || $y 如果 $x 和 $y 至少有一个为 true,则返回 true。
! !$x 如果 $x 不为 true,则返回 true。

PHP 数组运算符

PHP 数组运算符用于比较数组:

运算符 名称 例子 结果 显示结果
+ 联合 $x + $y $x 和 $y 的联合(但不覆盖重复的键)
== 相等 $x == $y 如果 $x 和 $y 拥有相同的键/值对,则返回 true。
=== 全等 $x === $y 如果 $x 和 $y 拥有相同的键/值对,且顺序相同类型相同,则返回 true。
!= 不相等 $x != $y 如果 $x 不等于 $y,则返回 true。
<> 不相等 $x <> $y 如果 $x 不等于 $y,则返回 true。
!== 不全等 $x !== $y 如果 $x 与 $y 完全不同,则返回 true。

循环

while循环

1
2
3
while (条件为真) {
要执行的代码;
}

do…while 循环
循环首先会执行一次代码块,然后检查条件,如果指定条件为真,则重复循环。

语法

1
2
3
do {
要执行的代码;
} while (条件为真);

for循环

如果您已经提前确定脚本运行的次数,可以使用 for 循环。

语法

1
2
3
for (init counter; test counter; increment counter) {
code to be executed;
}

参数:

  • init counter:初始化循环计数器的值
  • test counter:: 评估每个循环迭代。如果值为 TRUE,继续循环。如果它的值为 FALSE,循环结束。
  • increment counter:增加循环计数器的值

一个小例子

1
2
3
4
5
<?php 
for ($x=0; $x<=10; $x++) {
echo "数字是:$x <br>";
}
?>

PHP foreach 循环

foreach 循环只适用于数组,并用于遍历数组中的每个键/值对。

语法

1
2
3
foreach ($array as $value) {
code to be executed;
}

每进行一次循环迭代,当前数组元素的值就会被赋值给 $value 变量,并且数组指针会逐一地移动,直到到达最后一个数组元素。

下面的例子演示的循环将输出给定数组($colors)的值:

1
2
3
4
5
6
7
<?php 
$colors = array("red","green","blue","yellow");

foreach ($colors as $value) { //as关键字用于将数组中的每个元素赋值给指定的变量
echo "$value <br>";
}
?>

函数

声明一个函数要以function开头

1
2
3
4
5
6
<?php 
function too{
echo "hello world!"
}
too()//调用函数too
?>

举个例子

1
2
3
4
5
6
7
8
9
10
<?php
function setHeight($minheight=50) { //创建函数setHeight函数允许接收minheight,没有值时为50
echo "高度是:$minheight <br>"; // 打印出来,将minheight打印在这个位置
}

setHeight(350); //高度是:350
setHeight(); //高度是:50
setHeight(135); //高度是:135
setHeight(80); //高度是:80
?>
1
2
3
4
5
6
7
8
9
10
<?php 
function pot($x,$y){
$z = $x + $y;
return $z;
}
echo "5 + 10 = ".pot(5,10)."<br>";
echo "6 + 10 = ".pot(6,10)."<br>";
echo "8 + 10 = ".pot(8,10)."<br>";
?>

数组

直接举例子

1
2
3
4
<?php
$cars=array("porsche","BMW","Volvo");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . "."; //连接上打印的数组
?> //打印出I like porsche, BMW and Volvo.

创建一个数组 $cars=array(“porsche”,”BMW”,”Volvo”);

数组的排序函数

在本节中,我们将学习如下 PHP 数组排序函数:

  • sort() - 以升序对数组排序(默认的排序方式是A-Z)
  • rsort() - 以降序对数组排序
  • asort() - 根据值,以升序对关联数组进行排序
  • ksort() - 根据键,以升序对关联数组进行排序
  • arsort() - 根据值,以降序对关联数组进行排序
  • krsort() - 根据键,以降序对关联数组进行排序

超全局

PHP 全局变量 - 超全局变量

PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。

这些超全局变量是:

  • $GLOBALS 在局部中调用全局变量,$GLOBALS[‘x’]
  • $_SERVER 访问关于程序路径,脚本,服务器等问题
  • $_REQUEST 可以理解为收集一个变量的数据
  • $_POST 目前的理解和 $ _REQUEST相思
  • $_GET
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION

$_SERVER 例子

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>
  • 下面是$_SERVER 中访问的最重要的元素

  • 元素/代码 描述
    $_SERVER[‘PHP_SELF’] 返回当前执行脚本的文件名。
    $_SERVER[‘GATEWAY_INTERFACE’] 返回服务器使用的 CGI 规范的版本。
    $_SERVER[‘SERVER_ADDR’] 返回当前运行脚本所在的服务器的 IP 地址。
    $_SERVER[‘SERVER_NAME’] 返回当前运行脚本所在的服务器的主机名。
    $_SERVER[‘SERVER_SOFTWARE’] 返回服务器标识字符串(比如 Apache/2.2.24)。
    $_SERVER[‘SERVER_PROTOCOL’] 返回请求页面时通信协议的名称和版本(例如,“HTTP/1.0”)。
    $_SERVER[‘REQUEST_METHOD’] 返回访问页面使用的请求方法(例如 POST)。
    $_SERVER[‘REQUEST_TIME’] 返回请求开始时的时间戳(例如 1577687494)。
    $_SERVER[‘QUERY_STRING’] 返回查询字符串,如果是通过查询字符串访问此页面。
    $_SERVER[‘HTTP_ACCEPT’] 返回来自当前请求的请求头。
    $_SERVER[‘HTTP_ACCEPT_CHARSET’] 返回来自当前请求的 Accept_Charset 头( 例如 utf-8,ISO-8859-1)
    $_SERVER[‘HTTP_HOST’] 返回来自当前请求的 Host 头。
    $_SERVER[‘HTTP_REFERER’] 返回当前页面的完整 URL(不可靠,因为不是所有用户代理都支持)。
    $_SERVER[‘HTTPS’] 是否通过安全 HTTP 协议查询脚本。
    $_SERVER[‘REMOTE_ADDR’] 返回浏览当前页面的用户的 IP 地址。
    $_SERVER[‘REMOTE_HOST’] 返回浏览当前页面的用户的主机名。
    $_SERVER[‘REMOTE_PORT’] 返回用户机器上连接到 Web 服务器所使用的端口号。
    $_SERVER[‘SCRIPT_FILENAME’] 返回当前执行脚本的绝对路径。
    $_SERVER[‘SERVER_ADMIN’] 该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。
    $_SERVER[‘SERVER_PORT’] Web 服务器使用的端口。默认值为 “80”。
    $_SERVER[‘SERVER_SIGNATURE’] 返回服务器版本和虚拟主机名。
    $_SERVER[‘PATH_TRANSLATED’] 当前脚本所在文件系统(非文档根目录)的基本路径。
    $_SERVER[‘SCRIPT_NAME’] 返回当前脚本的路径。
    $_SERVER[‘SCRIPT_URI’] 返回当前页面的 URI。

PHP $_REQUEST

PHP $_REQUEST 用于收集 HTML 表单提交的数据。

下面的例子展示了一个包含输入字段及提交按钮的表单。当用户通过点击提交按钮来提交表单数据时, 表单数据将发送到

标签的 action 属性中指定的脚本文件。在这个例子中,我们指定文件本身来处理表单数据。如果您需要使用其他的 PHP 文件来处理表单数据,请修改为您选择的文件名即可。然后,我们可以使用超级全局变量 $_REQUEST 来收集 input 字段的值:

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

<!-- 创建一个表单,使用 POST 方法提交到当前页面 -->
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname"> <!-- 输入文本框,用于输入名字 -->
<input type="submit"> <!-- 提交按钮 -->
</form>

<?php
$name = $_REQUEST['fname']; // 从表单中获取名字的值
echo $name; // 输出名字的值
?>

</body>

$_GET

PHP 超全局变量 $_GET 和 $_POST 用于收集表单数据(form-data)。

PHP $_GET 也可用于收集提交 HTML 表单 (method=”get”) 之后的表单数据。

$_GET 也可以收集 URL 中的发送的数据。 例子

1
2
3
4
5
6
7
<html>
<body>

<a href="test_get.php?subject=PHP&web=W3school.com.cn">测试 $GET</a>

</body>
</html>

词汇积累

echo 输出
array()创建数组
var_dump() 会返回变量的数据类型和值
class
strlen()返回字符串的长度,以字符统计
str_word_count() 函数对字符串中的单词进行计数
strrev() 函数反转字符串
strpos() 函数用于检索字符串内指定的字符或文本。
str_replace() 函数用一些字符串替换字符串中的另 一些字符。
define()创建一个常量
switch语句 case 在switch语句中做一个判断表达式的值与某个case匹配时,对应的代码块将被执行。
date调用当前时间
break 在每个case的代码块末尾使用break关键字来终止switch语句的执行。
defaultswitch语句中的一个可选分支,用于处理没有匹配到的任何case的情况执行
count()获取数组长度
action 是一个属性,用于指定表单数据提交的目标 URL 或处理程序的地址。