一 变量
变量的使用
定义变量
<?php
$a = 2;
$A = 'Hello';
删除变量
unset($a);
变量的种类
预定义变量
这里列举几个重要的预定义变量
$_ GET: 获取所有表单以get方式提交的数据。
$_ POST: POST提交的数据都会保存在此。
$_ REQUEST: GET和PQST提交的都会保存。
$GLOBALS: PHP 中所有的全局变量。
$_ SERVER:服务器信息。
$_ _SESSION: session 会话数据+
$_ COOKIE: cookie 会话数据。
S_ ENV: 环境信息+
$_ FILES: 用户上传的文件信息。
可变变量
$A = 'Hello';
$AA = 'A';
echo $$AA;
变量传值
<?php
//值传递
$a = 1;
$b = $a;
$a = 2;
echo $a.$b.'<br>';
//引用传递
$c = 1;
$d = &$c;
$c = 2;
echo $c.$d.'<br>';
输出结果为
21
22
常量
常量的定义和使用
//常量的定义
//1.使用函数定义
define('-_-','smile');
//2.使用const
const PI = 3.14;
echo PI;
echo constant('-_-');
//特殊字符使用需要使用constant函数
常量的使用与变量相同,定义时必须赋值。
如果常量名为特殊符号,必须使用define来定义。
系统常量
PHP_ _VERSION: PHP 版本号。
PHP_ INT_ SIZE: 整形大小。
PHP_ _INT_ MAX:整形能表示的最大值。
魔术系统常量
_DIR__ :当前被执行的脚本所在电脑的绝对路径。
_FILE__ :当前被执行的脚本所在的电脑的绝对路径(带自己文件的名字)。
_LINE_ : 当前所属的行数。
_NAMESPACE_ : 当前所属的命名空间。
_CLASS_ :当前所属的类。
_METHOD_ :当前所属的方法。
内存分区
在内存中,通常有以下几个分区:
栈区:程序可以操作的内存部分(不存数据,运行程序代码),少但是快。
代码段:存储程序的内存部分(不执行)。
数据段:存储普通数据(全局区和静态区)。
堆区:存储复杂数据,大但是效率低。
数据类型
数据类型分类
简单数据类型
整型: int/integer, 系统分配4个字节存储。
在PHP中提供了四种整型的定义方式:十进制定义,二进制定义,八进制定义和十六进制定义。
$a= 120; //10进制
$a=0b110; //2进制
$a=0120; //8进制
$a=0x120; //16进制
//默认输出时会转换为十进制
浮点型: float/double,系统分配8个字节存储,表示小数或者整型存不下的整数。
字符串型: string, 系统根据实际长度分配。
布尔型: bool/boolean, 只有两个值: true 和false。
复合数据类型
对象类型: object, 存放对象。
数组类型: array, 存储多个数据(一次性)。
特殊数据类型
资源类型: reresource, 存放资源数据(PHP外部数据,如数据库、文件)。
空类型: NULL, 只有一个值就是NULL (不能运算)。
类型转换
转布尔类型
其他类型转数值
1、布尔true为1,false为0;。
2、字符串转数值
以字母开头的字符串,永远为0。
以数字开头的字符串,取到碰到字符串为止(不会同时包含两个小数点)。
判断数据类型
判断是否为该类型
<?php
$p = 3.14;
var_dump(is_int($p));
输出bool类型不能使用echo,需要使用var_dump()函数。
判断是何类型
Gettype():获取类型,得到的是该类型对应的字符串。
Settype():设定数据类型。
注:与换强制转不同。
1、 强制转换(类型)变量名,是对数据值复制的内容进行处理(不会处理实际存储的内容)。
2、settype() 会直接改变数据本身。
错误抑制符
在PHP中有一些错误可以提前预知,但是这些错误可能无法避免,但是又不希望报错给用户看,可以使用错误抑制符处理。
@:在可能出错的表达式前面使用@符号即可。
<?php
$p = 3.14;
$q = 0;
//$m = $p / $q; //报错
@$m = $p / $q;
计算机码
原码:数据本身从十进制转换成二进制得到的结果。
正数:左边符号位为0
负数:左边符号位为10
反码:针对负数,符号位不变,其他位取反。
补码:针对负数,反码+1。
位运算符
&:按位与,两个位都为1,结果为1,否则为0。
|:按位或,两个有一个为1,结果为1。
~:按位非,一个位如果为1则变成0,否则反之。
^:按位异或,两个相同则为0,不同则为1。
<<:按位左移,整个位(32 位),向左移动- -位,右边补0。
>>: 按位右移,整个位向右移动一位,左边补符号位对应内容(正数补0,负数补1)。