php基础总结
php基础
学习代码审计做铺垫
加油奥利给
学习书名《php7底层设计与源码实现》
学习网站
https://www.w3school.com.cn/html/index.asp
1 | 代码部分 |
1. phpinfo();函数查看php版本还能看到其它很多关于PHP的信息,叫做探针
- 代码 结果
1
2
3
phpinfo();
2. 变量
代码
1
2
3
4
5
6
$a=1;
$b=5;
$c=$a+$b;
echo $c;结果
上面的介绍
变量前面要加上$
echo 和 print 之间的差异:- echo - 能够输出一个以上的字符串
- print - 只能输出一个字符串,并始终返回 1
3. 字符串
- 代码 结果
1
2
3
4
5
6
7
$x = "Hello world!";
echo $x;
echo "<br>";
$x = 'Hello world!';
echo $x;
上面的介绍
那个<br>
是换行的意思
4. 整数
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$x = 5985;
var_dump($x);
echo "<br>";
$x = -345; // 负数
var_dump($x);
echo "<br>";
$x = 0x8C; // 十六进制数
var_dump($x);
echo "<br>";
$x = 047; // 八进制数
var_dump($x);结果
上面的介绍
var_dump() 会返回变量的数据类型和值
可以用三种格式规定整数:十进制、十六进制(前缀是 0x)或八进制(前缀是 0)
含有十六进制字符的字符串不再被视为数字,而是当作普通的字符串
5.浮点型
- 代码 结果
1
2
3
4
5
6
7
8
9
10
11
12
$x = 10.365;
var_dump($x);
echo "<br>";
$x = 2.4e3;
var_dump($x);
echo "<br>";
$x = 8E-5;
var_dump($x);
上面的介绍
var_dump() 会返回变量的数据类型和值
6. 布尔型
是 true
或 false
7. 数组
php的数组用
- 代码array来定义结果
1
2
3
4
$cars=array("Volvo","BMW","SAAB");
var_dump($cars);
var_dump() 会返回变量的数据类型和值
8.NULL 值
- 代码 NULL就是空的意思
1
2
3
4
5<?php
$x="Hello world!";
$x=null;
var_dump($x);
?>
9. 运算符
- 代码
1
2
3
4
5
6
7
8
9
$x=17;
$y=8;
echo ($x + $y); // 输出 25
echo ($x - $y); // 输出 9
echo ($x * $y); // 输出 136
echo ($x / $y); // 输出 2.125
echo ($x % $y); // 输出 1
10 递增递减运算符
- 代码 结果
1
2
3
4
5
6
7
8
9
$X=2;
echo ++$X;
echo "<br/>";
$A=1;
echo $A++;
11 比较运算符
12 逻辑运算符
13字符串连接运算符
PHP中使用英文字符“.”将两个或多个字符串连接起来
代码
1
2
3
4
5
6<?php
$X="abc";
$A="def";
$V=$X.$A;
echo $V;
?>结果
14 赋值运算符
15 位运算符
位运算符是指对二进制位从低位到高位对齐后进行运算
就是按与,或,异或,取反,左移,右移
- 代码
1
2
3
4
5
6
7
8
9
<?php
$a=1;
echo ($a & 2)."<br/>";
echo ($a | 2)."<br/>";
echo ($a ^ 2)."<br/>";
echo (~ 2)."<br/>";
echo ($a << 2)."<br/>";
echo ($a >> 2)."<br/>";
?>
结果

16 数组Array 函数
- 代码
1
2
3
4
<?php
$cars=array("Volvo","BMW","SAAB");
var_dump($cars);
?>
结果

**var_dump() 会返回变量的数据类型和值**
- 代码
1
2
3
4
<?php
$cars=array("Volvo","BMW","SAAB");
echo $cars[0];
?>
17 字符串函数
参考https://www.w3school.com.cn/php/php_string.asp
18 常量
设置 PHP 常量
请使用 define() 函数它使用三个参数:
1.首个参数定义常量的名称
2.第二个参数定义常量的值
3.可选的第三个参数规定常量名是否对大小写不敏感。默认是 false。代码
1
2
3
4<?php
define("GREETING", "你好");
echo GREETING;
?>结果
19 判断if
简单理解就是对就执行
if
代码1
2
3
4
5
6
7<?php
$t=1 ;
if ($t<2) {
echo "Have a good day!";
}
?>if…else
代码
1
2
3
4
5
6
7
8
9
<?php
$t=2;
if ($t<2) {
echo "Have a good day!";
} else {
echo "Have a good night!";
}
?>
结果

if…elseif….else
1
2
3
4
5
6
7
8
9<?php
if (条件) {
条件为 true 时执行的代码;
} elseif (condition) {
条件为 true 时执行的代码;
} else {
条件为 false 时执行的代码;
}
?>20 Switch 语句
如果您希望有选择地执行若干代码块之一,请使用 Switch 语句
使用 Switch 语句可以避免冗长的 if..elseif..else 代码块
和C语言的是一样的
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17<?php
$a="orange";
switch ($a) {
case "apple":
echo "1";
break;
case "banana":
echo "2";
break;
case "orange":
echo "3";
break;
default:
echo "4";
}
?>结果
21 while 循环
while 循环
代码1
2
3
4
5
6
7
8<?php
$x=1;
while($x<=5) {
echo "这个数字是:$x <br>";
$x++;
}
?>结果
do…while 循环
循环首先会执行一次代码块,然后检查条件,如果指定条件为真,则重复循环
代码
1
2
3
4
5
6
7
8
<?php
$x=1;
do {
echo "这个数字是:$x <br>";
$x++;
} while ($x<=5);
?>
结果

22 for 循环
和c一样
代码
1
2
3
4
5<?php
for ($x=0; $x<=10; $x++) {
echo "数字是:$x <br>";
}
?>结果
23 foreach 循环
foreach 循环只适用于数组,并用于遍历数组中的每个键/值对
- 代码
1
2
3
4
5
6
7
<?php
$colors = array("1","2","3","4");
foreach ($colors as $value) {
echo "$value <br>";
}
?>
结果

24 函数
定义函数用function来定义
定义函数
代码1
2
3
4
5
6
7<?php
function a() {
echo "Hello world!";
}
a(); // 调用函数
?>结果
函数参数
代码1
2
3
4
5
6
7
8
9
10
11<?php
function familyName($fname) {
echo "现在数字是:$fname <br>";
}
familyName("1");
familyName("2");
familyName("3");
familyName("4");
familyName("5");
?>结果
默认参数值
代码1
2
3
4
5
6
7
8
9
10<?php
function setHeight($minheight=50) {
echo "现在值是 : $minheight <br>";
}
setHeight(350);
setHeight(); // 将使用默认值 50
setHeight(135);
setHeight(80);
?>结果
函数 - 返回值
代码1
2
3
4
5
6
7
8
9
10<?php
function sum($x,$y) {
$z=$x+$y;
return $z;
}
echo "5 + 10 = " . sum(5,10) . "<br>";
echo "7 + 13 = " . sum(7,13) . "<br>";
echo "2 + 4 = " . sum(2,4);
?>结果
25 数组
array()函数中创建数组
count() 函数用于返回数组的长度(元素数)
单数组
代码1
2
3
4
5
6
7
8
9<?php
$cars=array("porsche","BMW","Volvo");
$arrlength=count($cars);
for($x=0;$x<$arrlength;$x++) {
echo $cars[$x];
echo "<br>";
}
?>结果
关联数组
代码
1
2
3
4
<?php
$age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47");
echo "Elon is " . $age['Elon'] . " years old.";
?>
结果

26 超全局
这些超全局变量是:
- $GLOBALS
- $_SERVER
- $_REQUEST
- $_POST
- $_GET
- $_FILES
- $_ENV
- $_COOKIE
- $_SESSION
开始介绍
第一个$GLOBALS
$GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)
PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。
下面的例子展示了如何使用超级全局变量 $GLOBALS:代码
1
2
3
4
5
6
7
8
9
10
11<?php
$x = 75;
$y = 25;
function addition() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
?>结果
第二个$_SERVER
$_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'];
?>
结果

中访问的最重要的元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$_SERVER['PHP_SELF'] 返回当前执行脚本的文件名。
$_SERVER['GATEWAY_INTERFACE'] 返回服务器使用的 CGI 规范的版本。
$_SERVER['SERVER_ADDR'] 返回当前运行脚本所在的服务器的 IP 地址。
$_SERVER['SERVER_NAME'] 返回当前运行脚本所在的服务器的主机名(比如 www.w3school.com.cn)。
$_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。
- 第三个$_REQUEST