PHP 代码标记

1. asp <% php 代码 %>

2. 短标记<? php代码 ?>

3. 脚本标记

image.png

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

image.png

PHP 注释

行注释

  1. #.............
  2. //............

块注释

  1. /*
  2. */

image.png

PHP 变量

分隔符

;
php中标记结束符?>有自带语句结束符的效果

变量的使用

  1. 定义:在系统中增加对于的名字(内存)
  2. 赋值:可以将数值赋值给变量名
  3. 可以通过变量名访问存储的数据
  4. 可以将变量从内存中删除 unset()

① 删除变量源存储数据
image.png

② 没有删除变量源数据
image.png

变量名规则

  1. 在php中变量名由 “$”符号开头
  2. 名字由字母,数字,下划线构成,但不能以数字开头
  3. php 本身允许中文变量(不建议)

预定义变量

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

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

可变变量

由 php 从右到左执行导致

  1. <?php
  2. $a = 'xx';
  3. $xx = 'xiaosheng';// $a = 'xx' ==> $$a==>$xx ==> 'xiaosheng'
  4. echo $$a;
  5. ?>

image.png

变量传值

  1. 值传递

复制的值

  1. 引用传递

复制的数据地址

在内存中,通常有以下几个分区
栈区:程序可以操作的内存部分(不存数据,运行程序代码),少但是快
代码段:存储程序的内存部分(不执行)
数据段:存储普通数据(全局区和静态区)
堆区:存储复杂数据,大但是效率低
image.png

PHP 常量

常量的定义

在 php 中有两种定义方式(5.3 之后才有)
① 使用定义常量的函数:define(“常量名” ,常量值)
② 5.3之后才有的:const 常量名 = 值
image.png

命名规则

  1. 常量不需要使用“$”符号,一旦使用系统就是认为是变量;
  2. 常量的名字由数字,字母,下划线构成,不能以数字开头;
  3. 常量的名字通常以大写的名字为主;
  4. 常量命名的规则比变量松散,可以使用一些特殊字符,该方式只能使用 define 定义

image.png

【注】:
① Define 和 const 定义的常量是有区别的:在于访问权限区别
② 定义常量通常不区分大小写,但也能区分,参照define函数的第三个参数

常量使用形式

常量的使用和变量一样,但不可改变值
有时候还需要另外一种形式来访问(特殊名字的常量)
访问常量的函数:constant( '常量名' )
image.png

系统常量

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

常见的几个系统变量:
PHP_VERSION : PHP 版本号
PHP_INT_SIZE:整形大小
PHP_INT_MAX:整形能表示的最大值
image.png

在 PHP 中华友一些特殊的常量,他们由 双下划线+常量名+双下划线 结束,这种常量称之系统魔术常量:魔术常量的值通常会跟着环境的变化,但是用户改变不了
DIR :当前被执行的脚本所在电脑的绝对路径
FILE:当前被执行的脚本所在的电脑的绝对路径(带自己的文件的名字)
LINE:当前所属的行数
image.png
NAMESPACE:当前所属的命名空间
CLASS:当前所属的类
METHOD:当前所属的方法

数据类型

数据类型

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

复合数据类型:2个小类
对象类型:object,存放对象(面向对象)
数组对象:array,存储多个数据(一次性)

特殊数据类型:2个小类
资源类型:resourse,存放资源数据(PHP 外部数据,如数据库、文件)
空类型:NULL,只有一个值就是NULL(不能运算)

类型转换

在很多条件下,需要指定的数据类型,需要外部数据(当前 PHP 取得的数据),转换成目标数据类型

在 PHP 中有两种数据类型转换方式:

  1. 自动转换:系统根据需求自动判定,自己转换(用的比较多,效率偏低)
  2. 强制(手动)转换:认为根据需要的目标类型转换

强制转换规则:在变量之前增加一个括号(),然后在里面写上对应类型:int/integer其中NULL 类型用到 unset()
在转换过程中,用的比较多的就是转布尔类型(判断)和转数值类型(算数运算)
其他类型转布尔类型:true 或者 false,在 PHP 中比较少 类型转换编程false
image.png

其他类型转数值的说明

  1. 布尔 true 为1,false 为0
  2. 字符串转数值有自己的规则

2.1 以字母开头的字符串,永远为 0;
2.2 以数字开头的字符串,取到碰到字符串为止(不会同时包含两个小数点)
image.png

类型判断

   通过一组类型判断函数,来判断变量,最终返回这个变量所保存数据的数据类型(相同结果为 true,失败为false):是一组is_开头后面跟类型名字的函数:is_XXX(变量名)<br />Bool 类型不能用 echo 来查看,可以使用 var_dump 结构查看<br />Var_dump( 变量1,变量2...)<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/12614367/1637057424222-c6537bdd-9723-4c5a-b9df-a2193daf1f81.png#clientId=u03b8ce8c-e295-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=236&id=uf25cfe8e&margin=%5Bobject%20Object%5D&name=image.png&originHeight=471&originWidth=1151&originalType=binary&ratio=1&rotation=0&showTitle=false&size=47398&status=done&style=none&taskId=u84c53477-3b46-4a5e-87e8-10a9e2a61be&title=&width=575.5)<br />还有一组函数可以用来获取以及设定数据(变量)的类型<br />**Gettype( 变量名 )**:获取类型,得到的是该类型对应的字符串<br />**Settype( 变量名 )**:设定数据类型,是对数据值复制的内容进行处理(不会处理实际的存储内容)<br />1.强制转换(类型)变量名,是对数据值复制的内容进行处理(不会处理实际存储的内容)<br />2.Settype 会直接改变数据本身<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/12614367/1637058309514-e2d47e6b-09ec-495e-8119-8118b9322902.png#clientId=u03b8ce8c-e295-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=148&id=uae5e52d4&margin=%5Bobject%20Object%5D&name=image.png&originHeight=295&originWidth=1294&originalType=binary&ratio=1&rotation=0&showTitle=false&size=35061&status=done&style=none&taskId=uece0c927-312f-433d-8fc6-1fd784096c9&title=&width=647)

整数类型进制

十进制:逢 10 进 1 ,0~9
二进制:逢 2 进 1 ,0~1
八进制:逢 8 进 1,0~7
十六进制:逢 16 进 1,0~9 及 a~f

image.png

进制转换

PHP 中 不需要用户这么复杂的运算,提供了很多函数进行运算
Decbin():十进制转二进制
Decoct():十进制转八进制
Dechex():十进制转十六进制
Bindec():二进制转十进制
。。。。
image.png

浮点类型

浮点型:小数类型及超过整型所能存储范围的整数(不保证精度),进度范围大概在15个有效数字左右

浮点型定义有两种方式:
$f = 1.23;
$f = 1.23e10; //科学计数法,其中 e 表示底 10
$f = PHP_INT_MAX + 1;
image.png

布尔类型

布尔类型:两个值true 和 false,通常是用于判断比较
image.png

在进行某些数据判断的时候,需要特别注意类型转换
Empty():判断数据的值是否为“空”,不是NULL,如果为空返回true,不为空返回false
lsset():判断数据存储的变量本身是否存在,存在变量返回true,不存在返回false