PHP学习
php学习
echo函数
echo是一个语言结构,使用的时候可以不用加括号,也可以加上括号、
用法
1 | echo"" |
1 |
|
标准输出
1 | 这是一个PHP! |
在上面的语言中
1 | <br>换行 |
当然也可以不用这样
1 | <?php |
标准输出
1 | 学习 PHP |
array[]是数组函数
Array - JavaScript | MDN (mozilla.org)
print函数
print同样是一个语言结构,可以使用括号,也可以不使用
用法
1 | print"" |
具体用法和echo一样,就不过多叙述
PHP-EOF(heredoc
PHP-EOF是一种定界符
是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字符串的方法。
条件:
必须后面衔接分号,否则编译不通过
EOF可以用其他的字符代替,只需要保证结束表示和开始表示一致即可
结束标识必须独自占一行(即必须从行首开始,前后不能衔接多余空白*且前后不能空格
开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。
内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法。
1
2
3
4
5
6
7
8
9<?php
echo <<<EOF
<p>哈哈</p>
<p>你猜</p>
哈哈哈<br>
你猜我让你猜什么<br>
EOF
?>在这里的时候
1
2<br>是换行的
<p>是便是一段的
注意:
以<<<EOF为开始标记开始,以EOF结束标记结束,结束标语必须顶头写,不能有任何的缩进和空格,且在结束标记末尾要有分号
开始标记和结束标记相同,不局限于EOF,EOO,EOD,EOT什么的也可以,只要保证结束标记和开始标记不出现在正文中皆可以了
于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在 heredoc 中,变量不需要用连接符 . 或 , 来拼接
后面的好像解析的时候自己解析乱了了,如果想继续看的话可以转(算是光明正得的水一波自己的笔记
```
<?php
$a=”歪比”;
$name= <<<EOF"abc"$a "123"<br>
EOF;
echo $name;
?>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
**![202371144653.png](https://s2.loli.net/2023/07/01/IyLY5JsgKfHeDZE.png)**
## **PHP数据类型**
**PHP变量存储不同的数据类型,支持**
- **String(字符串)**
- **Integer(整型)**
- **Float(浮点型)**
- **Boolean(布尔型)**
- **Array(数组)**
- **Object(对象)**
- **NULL(空值)**
- **Resource(资源类型)**
#### **PHP字符串**
**一个字符串就是一串字符的序列**<?php
$x = “Helloworld!”;
echo $x;
echo “
“;
$x = ‘Helloworld!’;
echo $x;
?>1
2
3
**标准输出**Helloworld!
Helloworld!1
2
3
4
5
6
7
8
9
10
11
#### **PHP整型**
**没有小数点的整数**
- **整数必须至少有一个数字 (0-9)**
- **整数不能包含逗号或空格**
- **整数是没有小数点的**
- **整数可以是正数或负数**
- **整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)。**<?php
$x = 5985;
var_dump($x);
echo “
“;
$x = -345; // 负数
var_dump($x);
echo “
“;
$x = 0x8C; // 十六进制数
var_dump($x);
echo “
“;
$x = 047; // 八进制数
var_dump($x);
?>1
2
3
**var_dump()函数打印输入的字符和其数据类型,**int(5985)
int(-345)
int(140)
int(39)1
2
3
**上面四种都是int所以都输出int**<?php
$b = 3.1;
$c = true;
var_dump($b, $c);
?>1
float(3.1) bool(true)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#### **PHP 浮点型**
**浮点数是带小数部分的数字,或是指数形式。**
**具体来说和上面的整型差不多**
#### **PHP布尔型**
**布尔型就是TRUE和FALSE**
**布尔型常用语条件判断**
#### **PHP数组**
**数组可以在一个变量中存储多个值**<?php
$cars=array(“Volvo”,”BMW”,”Toyota”);
var_dump($cars);
?>1
array(3) { [0]=> string(5) “Volvo” [1]=> string(3) “BMW” [2]=> string(6) “Toyota” }
1 |
|
<?php
class Car
{
var $color;
function __construct($color=”green”) {
$this->color = $color;
}
function what_color() {
return $this->color;
}
}
function print_vars($obj) {
foreach (get_object_vars($obj) as $prop => $val) {
echo “\t$prop = $val\n”;
}
}
// 实例一个对象
$herbie = new Car(“white”);
// 显示 herbie 属性
echo “\therbie: Properties\n”;
print_vars($herbie);
?>
</body>
</html>1
class:定义一个类。
Car:类名为 Car。
var:定义一个变量。
$color:一个名为 $color 的变量。
__construct:构造函数,用于创建类的实例时自动执行的方法。
function:定义一个函数。
what_color:函数名为 what_color。
return:函数返回值的关键字。
$this:指向当前对象的引用。
print_vars:函数名为 print_vars。
$obj:一个名为 $obj 的变量。
foreach:循环结构用于遍历数组或对象的每个元素。
get_object_vars:返回对象的属性和值的关联数组。
$prop:一个在循环过程中用来存储属性名的变量。
$val:一个在循环过程中用来存储属性值的变量。
echo:输出函数用于打印文本。
new:创建一个新的对象实例。
Car(“white”):用 Car 类创建一个新的对象,并将颜色参数设置为 “white”。
herbie:变量名为 herbie。
Properties:文本字符串 “ Properties”。
print_vars($herbie):调用 print_vars 函数,并将 herbie 传递给它作为参数。1
2
3
**测试结果**
herbie: Properties color = white1
2
3
4
5
6
7
8
9
#### **PHP-NULL值**
**NULL表示变量没有值。NULL是数据类型为NULL的值。**
**NULL值表示一个变量是否为空值。同样可以用于数值空值和NULL值的区别。**
**可以通过设置变量值为NULL来清空变量数据。**
<?php
$x=”Hello world!”;
$x=null;
var_dump($x);
?>1
2
3
**测试结果**
NULL1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#### **PHP资源类型**
**PHP 资源 resource 是一种特殊变量,保存了到外部资源的一个引用。**
**常见资源数据类型有打开文件、数据库连接、图形画布区域等。**
**由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义。**
**使用 get_resource_type() 函数可以返回资源(resource)类型:**
**get_resource_type(resource $handle): string**
**此函数返回一个字符串,用于表示传递给它的 resource 的类型。如果参数不是合法的 resource,将产生错误。**
**简单来说,php资源类型变量就是用来打开文件、数据库连接、图形化部区域等的一种特殊变量。**
## **PHP类型比较**
**PHP是弱类型语言,但是也要进行比较**
**松散比较:==的比较,只比较值不比较类型**
**严格比较:===的比较,比较值和类型**
<?php
if(66==”66”){
echo “1.值相等”;
}
echo PHP_EOL;
if(66===”66”){
echo “2.类型相等”;
}else{
echo”3.类型不相等”;
}
?>1
2
3
4
5
**这里面的PHP_EOL是换行符,后面应该会写的**
**测试结果**
1.值相等 3.类型不相等1
2
3
**PHP中比较0、false、null**
<?php
echo ‘0 == false: ‘;
var_dump(0 == false);
echo ‘0 === false: ‘;
var_dump(0 === false);
echo PHP_EOL;
echo ‘0 == null: ‘;
var_dump(0 == null);
echo ‘0 === null: ‘;
var_dump(0 === null);
echo PHP_EOL;
echo ‘false == null: ‘;
var_dump(false == null);
echo ‘false === null: ‘;
var_dump(false === null);
echo PHP_EOL;
echo ‘“0” == false: ‘;
var_dump(“0” == false);
echo ‘“0” === false: ‘;
var_dump(“0” === false);
echo PHP_EOL;
echo ‘“0” == null: ‘;
var_dump(“0” == null);
echo ‘“0” === null: ‘;
var_dump(“0” === null);
echo PHP_EOL;
echo ‘“” == false: ‘;
var_dump(“” == false);
echo ‘“” === false: ‘;
var_dump(“” === false);
echo PHP_EOL;
echo ‘“” == null: ‘;
var_dump(“” == null);
echo ‘“” === null: ‘;
var_dump(“” === null);1
2
3
**测试输出**
0 == false: bool(true)
0 === false: bool(false)
0 == null: bool(true)
0 === null: bool(false)
false == null: bool(true)
false === null: bool(false)
“0” == false: bool(true)
“0” === false: bool(false)
“0” == null: bool(false)
“0” === null: bool(false)
“” == false: bool(true)
“” === false: bool(false)
“” == null: bool(true)
“” === null: bool(false)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
**PHP中比较图**
**https://www.runoob.com/wp-content/uploads/2019/05/xxxxphp.png**
## **PHP常量**
**常量是一个简单值的标识符,该数值在脚本中不能改变**
**一个常来那个使用英文字幕,下划线和数字组成,但数字不能作为首字母出现。(常量名不需要加 $ 修饰符)。**
**常量在整个脚本中都可以使用。**
**语法**
bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )1
2
3
4
5
6
7
8
9
10
11
- **name:必选参数,常量名称,即标志符。**
- **value:必选参数,常量的值。**
- **case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感,默认是大小写敏感的。**
**注意:自 PHP 7.3.0 开始,定义不区分大小写的常量已被弃用。从 PHP 8.0.0 开始,只有 false 是可接受的值,传递 true 将产生一个警告。**
<?php
define(“aha”,”有意思捏”);
echo aha;
echo ‘
‘;
echo greeting;
?>1
2
3
4
5
6
7
**这里的话定义了一个常量aha=有意思捏**
**greeting没有被定义应该会给出警告但还是会出现**
**测试结果**
有意思捏
Warning: Use of undefined constant greeting; - assumed ‘greeting;’ (this will throw an Error in a future version of PHP) in D:\Ctf\phpStudy_64\phpstudy_pro\WWW\php\测试.php on line 5
greeting;1
2
3
#### **常量一经定义就是全局的**
<?php
define(“GREETING”, “欢迎访问 Runoob.com”);
function myTest() {
echo GREETING;
}
myTest(); // 输出 “欢迎访问 Runoob.com”
?>1
欢迎访问 Runoob.com1
2
3
4
5
6
7
## **PHP字符串变量**
**字符串变量用来包含有字符串的值**
**在创建字符串之后,我们就可以对其进行操作,直接使用或者存储起来。**
<?php
$txt=”Hello World”;
echo $txt;
?>1
2
3
**测试输出:**
Hello World1
2
3
4
5
#### **PHP并置运算符**
**并置运算符.将两个字符串值连接起来**
<?php
$txt1=”Hello World”;
$txt2=”hello 个锤子”;
echo $txt1 . “ “ . $txt2;
?>1
2
3
**测试输出**
Hello World hello 个锤子1
2
3
4
5
#### **PHP strlen()函数**
**strlen函数返回字符串的长度(字节数)**
<?php
$txt1=”Hello World
“;
$txt2=”hello 个锤子
“;
echo $txt1 . “ “ . $txt2;
echo strlen($txt1);
?>1
2
3
**测试输出**
Hello World
hello 个锤子
151
2
3
4
5
6
7
#### **PHP strpos函数**
**strpos函数用于在字符串中查找一段指定的文本或者一个字符**
**如果找到了就会返回第一个匹配的字符位置。如果没找到就会返回FALSE**
<?php
$txt1=”Hello World
“;
$txt2=”hello 个锤子
“;
echo strpos($txt1,$txt2);
?>1
2
3
**测试结果**
1 |
|
<?php
$x=100;
$y=6;
echo($x+$y);
echo(“
“);
echo($x-$y);
echo(“
“);
echo($x*$y);
echo(“
“);
echo($x/$y);
echo(“
“);
echo($x%$y);
echo(“
“);
echo(-$y);
?>1
2
3
**测试输出**
106
94
600
16.666666666667
4
-61
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#### **PHP 赋值运算符**
**在 PHP 中,基本的赋值运算符是 =。它意味着左操作数被设置为右侧表达式的值。也就是说,$x = 5 的值是 5。**
#### **PHP 递增/递减运算符**
| **运算符** | **名称** | **描述** |
| :--------- | :--------- | :---------------------- |
| **++ x** | **预递增** | **x 加 1,然后返回 x** |
| **x ++** | **后递增** | **返回 x,然后 x 加 1** |
| **-- x** | **预递减** | **x 减 1,然后返回 x** |
| **x --** | **后递减** | **返回 x,然后 x 减 1** |
#### **PHP 比较运算符**
**比较操作符可以比较两个值:**
| **运算符** | **名称** | **描述** | **实例** |
| :---------- | :------------- | :------------------------------------------------- | :--------------------- |
| **x == y** | **等于** | **如果 x 等于 y,则返回 true** | **5==8 返回 false** |
| **x === y** | **绝对等于** | **如果 x 等于 y,且它们类型相同,则返回 true** | **5==="5" 返回 false** |
| **x != y** | **不等于** | **如果 x 不等于 y,则返回 true** | **5!=8 返回 true** |
| **x <> y** | **不等于** | **如果 x 不等于 y,则返回 true** | **5<>8 返回 true** |
| **x !== y** | **不绝对等于** | **如果 x 不等于 y,或它们类型不相同,则返回 true** | **5!=="5" 返回 true** |
| **x > y** | **大于** | **如果 x 大于 y,则返回 true** | **5>8 返回 false** |
| **x < y** | **小于** | **如果 x 小于 y,则返回 true** | **5<8 返回 true** |
| **x >= y** | **大于等于** | **如果 x 大于或者等于 y,则返回 true** | **5>=8 返回 false** |
| **x <= y** | **小于等于** | **如果 x 小于或者等于 y,则返回 true** | **5<=8 返回 true** |
#### **PHP 逻辑运算符**
| **运算符** | **名称** | **描述** | **实例** |
| :----------- | :------- | :----------------------------------------------- | :--------------------------------------- |
| **x and y** | **与** | **如果 x 和 y 都为 true,则返回 true** | **x=6 y=3 (x < 10 and y > 1) 返回 true** |
| **x or y** | **或** | **如果 x 和 y 至少有一个为 true,则返回 true** | **x=6 y=3 (x==6 or y==5) 返回 true** |
| **x xor y** | **异或** | **如果 x 和 y 有且仅有一个为 true,则返回 true** | **x=6 y=3 (x==6 xor y==3) 返回 false** |
| **x && y** | **与** | **如果 x 和 y 都为 true,则返回 true** | **x=6 y=3 (x < 10 && y > 1) 返回 true** |
| **x \|\| y** | **或** | **如果 x 和 y 至少有一个为 true,则返回 true** | **x=6 y=3 (x==5 \|\| y==5) 返回 false** |
| **! x** | **非** | **如果 x 不为 true,则返回 true** | **x=6 y=3 !(x==y) 返回 true** |
#### **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** |
#### **三元运算符**
**另一个条件运算符是"?:"(或三元)运算符 。**
##### **语法格式**
(expr1) ? (expr2) : (expr3)1
2
3
4
5
6
7
8
9
10
11
**对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。**
**自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。**
#### **组合比较符(PHP7+)**
**PHP7+ 支持组合比较符(combined comparison operator)也称之为太空船操作符,符号为 <=>。组合比较运算符可以轻松实现两个变量的比较,当然不仅限于数值类数据的比较。**
**语法格式如下:**
$c = $a <=> $b;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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
**解析如下:**
- **如果 $a > $b, 则 $c 的值为 1。**
- **如果 $a == $b, 则 $c 的值为 0。**
- **如果 $a < $b, 则 $c 的值为 -1。**
#### **运算符优先级**
**下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。**
**说明:左 = 从左到右,右 = 从右到左。**
| **结合方向** | **运算符** | **附加信息** |
| :----------- | :----------------------------------------------------------- | :--------------------------- |
| **无** | **clone new** | **clone 和 new** |
| **左** | **[** | **array()** |
| **右** | **++ -- ~ (int) (float) (string) (array) (object) (bool) @** | **类型和递增/递减** |
| **无** | **instanceof** | **类型** |
| **右** | **!** | **逻辑运算符** |
| **左** | *** / %** | **算术运算符** |
| **左** | **+ – .** | **算术运算符和字符串运算符** |
| **左** | **<< >>** | **位运算符** |
| **无** | **== != === !== <>** | **比较运算符** |
| **左** | **&** | **位运算符和引用** |
| **左** | **^** | **位运算符** |
| **左** | **\|** | **位运算符** |
| **左** | **&&** | **逻辑运算符** |
| **左** | **\|\|** | **逻辑运算符** |
| **左** | **? :** | **三元运算符** |
| **右** | **= += -= *= /= .= %= &= \|= ^= <<= >>= =>** | **赋值运算符** |
| **左** | **and** | **逻辑运算符** |
| **左** | **xor** | **逻辑运算符** |
| **左** | **or** | **逻辑运算符** |
| **左** | **,** | **多处用到** |
## IF-ELSE
if 语句:在条件成立时执行代码
if...else语句:在条件成立时执行一块代码,条件不成立时执行另一块
if...else...else语句:在若干条件之一成立时执行一个代码块
switch语句:在若干条件之一成立时执行一个代码块
#### if语句
if (条件)
{
条件成立时执行的代码;
}1
2
3
#### if-else语句
if (条件)
{
条件成立时执行的代码;
}
else
{
条件不成立实质性的代码;
}1
2
3
#### if-elseif-else语句
if (条件)
{
if 条件成立时执行的代码;
}
elseif (条件)
{
elseif 条件成立时执行的代码;
}
else
{
条件不成立时执行的代码;
}1
2
3
4
5
## switch语句
有选择的执行若干代码块之一
<?php
switch(n)
{
case label1:
执行的语句
break;
case label2:
执行的语句
break;
default:
如果 n 既不等于 label1 也不等于 label2,此处代码将执行;
}
?>
```
PHP数组
在PHP中,array()函数用来创建数组:
在PHP中,有三种类型的数组:
- 数值数组-带有数字ID的数组
- 关联数组-带有指定的键的数组,每个键关联一个值
- 多维数组-包含一个或者多个数组 的数组