PHP学习——语法基础(二)

一、PHP代码标记

我们用于区分PHP脚本的标志

ASP 标记:<% php代码%> 基本不用,要用需要配置

短标记: <? php 代码 ? > 基本不用,要用需要配置

脚本标记: < script language="php">php代码< /script>

标准标记(常用): < ?php php代码?>

二、PHP注释

单行注释: //或者#

多行注释: /**/

块注释:

1
2
3
4
5
/*
* @功能说明:注释说明
* @author
* @Version: ?
*/

三、PHP语句的分隔符

省流: ;,想着是和C语言差不多的分隔规则就OK

建议:还是不写?> 作为结束标识符

比如说

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
# 代码一
<?php
echo "Hello PHP";
echo "Hello PHP";
?>






# 代码二
<?php
echo "Hello PHP";
echo "Hello PHP";







# 上面两端带的效果是不一样的!!!
代码一:会生成很多空行
代码二:不会会生成空行

四、变量

变量定义

​ PHP中的变量不需要任何关键字定义变量(赋值)

​ 所有的变量都需要在前面加上一个$

输出变量:

1
2
3
<?php
$var = 1
echo $var

刪除变量:

1
2
3
4
5
<?php
$var = 1
echo $var
unset($var);
echo $var # 这样写就会报错

变量命名规则

  • 必须以$开头
  • 名字由字母、数字、下划线’_’开头,但是不可以以数字开头(允许中文变量)

预定义变量

概念: 提前定义的变量,系统定义的变量,存储许多需要用到的数据。(预定义变量都是数组)

  • $_GET: 获取所有的表单以 get 方式提交的数据
  • $_POST: POST 提交的数据都保存在这里
  • $_REQUEST: GET和POST提交的数据都会保存
  • $GLOBALS: PHP中所有的全局变量
  • $_SERVER: 服务器信息
  • $_SESSION: session 会话数据
  • $_COOKIE: cookie 会话信息
  • $_ENV: 环境信息
  • $_FILES: 用户上传的文件信息

可变变量

概念: 当一个变量的值和另一个变量的名字相同的时候,我们可以通过在第一个变量前多加一个$的方式访问第二变量的值。

1
2
3
4
<?php
$a = 'b'
$b = 'a'
echo $$a # 輸出b变量的值a

浅层原理: 首先$a=b,然后就相当于$$a=$b='a'

变量传值

值传递和引用传递 两种方式

1
2
3
4
5
6
7
8
9
10
# 值传递
$b=1;
$a=1;
$b=$a;

# 引用传递
$b=1;
$a=1;
$b=&$a;

引用传递:

内存分区

  • 栈区: 程序可以操作的内存部分**(不存数据,运行程序代码)**,少但是快
  • 代码段: 存储程序的内存部分(不执行)
  • 数据段: 存储普通数据(全局区和静态区)
  • 堆区: 存储复杂的数据,大但是效率高
执行流程

image-20240203135128389image-20240203135814196

五、常量

定义方式:

  • 使用定义变量的函数:define('常量名',常量值)
  • PHP5.3之后关键字定义: const PII = 3

规则:

  • 不用$
  • 名字规则基本一样,但是特殊字符相比之下可以使用的更多一些
  • 一般以大写字母开头
1
2
3
4
5
6
7
8
9
10
11
define('-_-','123'); # 允許
const '-_-' = '123'; # 不允許

# define和const区别
1、访问权限区别;
2、一般不区分大小写,也可以区分,define的迪桑格参数设置为true即可

# 输出-_-
echo -_-; # 不允许
echo constan('-_-'); # 允许

系统常量

概念: 系统帮助用户定义的常量,用户可以直接使用。

常用:

  • PHP_VERSION:PHP版本号
  • PHP_INT_SIZE:整型大小
  • PHP_INT_MAX:整型能表示的最大值(PHP中整型是允许出现负数:带符号)
系统魔术常量:
  • 在PHP中还有一些特殊的常量,他们有双下划线开始+长两名+双下划线结束。魔术常量的值通常会跟着环境变化,但是用户改变不了

    • __DIR__ 当前被执行的脚本所在的电脑的绝对路径;
    • __FILE__ 当前被执行的脚本所在的电脑的绝对路径(带自己文件的名字)
    • __LINE__ 当前所属的行数
    • __NAMESPACE__ 当前所属的命名空间
    • __CLASS__ 当前所属的类
    • __METHOD__ 当前所属的方法

    image-20240203142356296

六、数据类型

PHP 指的是存储的数据本身的类型,而不是变量的类型。PHP 是一种弱类型语言,变量本生没有数据类型。

分类

  • 基本数据类型

    • 整型:int\integer,系统分配 4个字节存储,表示整数类型
    • 浮点型:float/double,系统分配8个字节,表示小数或者整型存不下的整数
    • 字符串型:string,系统根据实际长度分配,表示字符串(引号)
    • 布尔类型:bool/boolean,表示布尔类型,只有两个值:true 和 false
  • 复合数据类型

    • 对象类型:object,存放对象(面向对象)
    • 数组类型:array,存储多个数据(一次性)
  • 特殊数据类型

    • 资源类型:resource,存饭资源数据(PHP 外部数据,如数据库、文件)
    • 空类型:NULL,只有一个值为 NULL**(不能运算)**

类型转换

  • 自动转换

  • 强制(手动)转换规则

    • image-20240203160616764
    • 例子

      image-20240203161149949

注意

  • 以字母开头的字符串永远为0
  • 以数字开头的字符串,取到碰到字符串类型位置(不可以同时包含两个小数点)

类型判断

概念:通过一组类型判断函数,来判断变量,最终返回这个变量保存数据的数据类型:是一组以 is_开头后面跟类型名字的函数:is_XXX(变量名)

注意: Bool类型不能使用echo来查看,可以使用var_dump结构查看

1
2
3
$a = '123'
var_dump(is_int($a)); # false
var_dump(is_strin($a)); # true
image-20240203161650949

类型获取和设定

例子:

1
2
3
4
5
6
# 获取类型
echo gettype($a); # string

# 设置类型
var_dump(settype($b,'int'));
echo gettype($b); # integer

七、PHP中的进制

进制转换

  • 10进制转换为16进制: Dechex()
  • 10进制转换为8进制:Decoct()
  • 10进制转换为2进制Decbin()
  • 2进制转换为10进制: Bindec()
  • ……

八、浮点数

1
2
3
4
5
$f1 = 1.23
$f2 = 1.23e10
$f3 = PHP_INT_MAX + 1 # 整型超出自身存储大小之后用浮点型存储
var_dump($f1,$f2);
// 注意:尽可能不要拿浮点数做精确计算,不准确

image-20240204151834705

**Empty():**判断数据的值是否为“空”,不是NULL,如果为空返回true,不为空返回false .

**Isset():**判断数据存储的变量本身是否存在,存在变量返回true,不存在返回false.

image-20240204152532284

九、运算符

image-20240204153741856

连接运算符

1
2
3
4
5
6
$a = 'hello ';
$b = 123;

echo $a . $b; //將a变量和b变量连接起来,输出hello 123
$a .= $b; // 相当于$a = $a . $b
echo $a; //输出hello 123

错误抑制符

有些错误可以预先知道的,但是这些错误不可避免的情况下使用。

1
2
3
4
// @:在可能出錯的表达式前使用@符号即可
$a=1;
$b=0;
var_dump(@($a/$b)); // 如此就不会报错,将@去掉就会报错

位运算符

…….

十、判断分支、循环分支

image-20240204160953736